让dedecms联动模型支持dede_sys_enum的father字段自动追加内容

织梦教程 强烈建议 2024-02-06 13:43 84 0

  对dede_sys_enum添加father字段,实现目的:在添加联动分类时,自动添加father的值。以500为分类界限。即:503的父类(father)为503,1001的father为1000。

  主要修改的文件 stepselect_main.php文件。

  解决: 修改有三处。

  1.主要添加内容:

  $father=intval(floor($evalue/500))*500;

  2.修改内容:

  $sql="INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`,`father`)

  VALUES('$ename','$evalue','$egroup','$disorder','$issign','$father'); ";

  

  require_once(dirname(__FILE__)."/config.php");

  CheckPurview('c_Stepselect');

  require_once(DEDEINC."/datalistcp.class.php");

  require_once(DEDEINC.'/enums.func.php');

  $ENV_GOBACK_URL=(isset($ENV_GOBACK_URL) ? $ENV_GOBACK_URL : 'stepselect_main.php');

  if(empty($action))

  {

  setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");

  if(!isset($egroup)) $egroup='';

  if(!isset($topvalue)) $topvalue=0;

  $etypes=array();

  $egroups=array();

  $dsql->Execute('me','SELECT * FROM `dede_stepselect` ORDER BY id DESC');

  while($arr=$dsql->GetArray())

  {

  $etypes[]=$arr;

  $egroups[$arr['egroup']]=$arr['itemname'];

  }

  if($egroup!='')

  {

  $orderby='ORDER BY disorder ASC, evalue ASC';

  if(!empty($topvalue))

  {

  // 判断是否为1级联动

  if ($topvalue % 500==0)

  {

  $egroupsql=" WHERE egroup LIKE '$egroup' AND evalue>=$topvalue AND evalue < ".($topvalue + 500);

  } else {

  $egroupsql=" WHERE (evalue LIKE '$topvalue.%%%' OR evalue=$topvalue) AND egroup LIKE '$egroup'";

  }

  }

  else

  {

  $egroupsql=" WHERE egroup LIKE '$egroup' ";

  }

  $sql="SELECT * FROM `dede_sys_enum` $egroupsql $orderby";

  } else {

  $egroupsql='';

  $sql="SELECT * FROM `dede_stepselect` ORDER BY id DESC";

  }

  //echo $sql;exit;

  $dlist=new DataListCP();

  $dlist->SetParameter('egroup',$egroup);

  $dlist->SetParameter('topvalue',$topvalue);

  $dlist->SetTemplet(DEDEADMIN."/templets/stepselect_main.htm");

  $dlist->SetSource($sql);

  $dlist->display();

  exit();

  }

  else if($action=='edit' || $action=='addnew' || $action=='addenum' || $action=='view')

  {

  AjaxHead();

  include('');

  exit();

  }

  else if($action=='del')

  {

  $arr=$dsql->GetOne("SELECT * FROM `dede_stepselect` WHERE id='$id' ");

  if(!is_array($arr))

  {

  ShowMsg("无法获取分类信息,不允许后续操作!", "stepselect_main.php?".ExecTime());

  exit();

  }

  if($arr['issystem']==1)

  {

  ShowMsg("系统内置的枚举分类不能删除!", "stepselect_main.php?".ExecTime());

  exit();

  }

  $dsql->ExecuteNoneQuery("DELETE FROM `dede_stepselect` WHERE id='$id'; ");

  $dsql->ExecuteNoneQuery("DELETE FROM `dede_sys_enum` WHERE egroup='{$arr['egroup']}'; ");

  ShowMsg("成功删除一个分类!", "stepselect_main.php?".ExecTime());

  exit();

  }

  else if($action=='delenumAllSel')

  {

  if(isset($ids) && is_array($ids))

  {

  $id=join(',', $ids);

  $groups=array();

  $dsql->Execute('me', "SELECT egroup FROM `dede_sys_enum` WHERE id IN($id) GROUP BY egroup");

  while($row=$dsql->GetArray('me'))

  {

  $groups[]=$row['egroup'];

  }

  $dsql->ExecuteNoneQuery("DELETE FROM `dede_sys_enum` WHERE id IN($id); ");

  //更新缓存

  foreach($groups as $egropu)

  {

  WriteEnumsCache($egroup);

  }

  ShowMsg("成功删除选中的枚举分类!", $ENV_GOBACK_URL);

  }

  else

  {

  ShowMsg("你没选择任何分类!", "-1");

  }

  exit();

  }

  else if($action=='delenum')

  {

  $row=$dsql->GetOne("SELECT egroup FROM `dede_sys_enum` WHERE id='$id' ");

  $dsql->ExecuteNoneQuery("DELETE FROM `dede_sys_enum` WHERE id='{$id}'; ");

  WriteEnumsCache($row['egroup']);

  ShowMsg("成功删除一个枚举!", $ENV_GOBACK_URL);

  exit();

  }

  else if($action=='edit_save')

  {

  if(preg_match("#[^0-9a-z_-]#i", $egroup))

  {

  ShowMsg("组名称不能有全角字符或特殊符号!","-1");

  exit();

  }

  $dsql->ExecuteNoneQuery("UPDATE `dede_stepselect` SET `itemname`='$itemname',`egroup`='$egroup' WHERE id='$id'; ");

  ShowMsg("成功修改一个分类!", "stepselect_main.php?".ExecTime());

  exit();

  }

  else if($action=='addnew_save')

  {

  if(preg_match("#[^0-9a-z_-]#i", $egroup))

  {

  ShowMsg("组名称不能有全角字符或特殊符号!", "-1");

  exit();

  }

  $arr=$dsql->GetOne("SELECT * FROM `dede_stepselect` WHERE itemname LIKE '$itemname' OR egroup LIKE '$egroup' ");

  if(is_array($arr))

  {

  ShowMsg("你指定的类别名称或组名称已经存在,不能使用!","stepselect_main.php");

  exit();

  }

  $dsql->ExecuteNoneQuery("INSERT INTO `dede_stepselect`(`itemname`,`egroup`,`issign`,`issystem`) VALUES('$itemname','$egroup','0','0'); ");

  WriteEnumsCache($egroup);

  ShowMsg("成功添加一个分类!","stepselect_main.php?egroup=$egroup");

  exit();

  }

  else if($action=='exarea')

  {

  $bigtypes=array();

  $dsql->ExecuteNoneQuery("DELETE FROM `dede_sys_enum` WHERE egroup='nativeplace'; ");

  $query="SELECT * FROM `dede_area` WHERE reid=0 order by id asc";

  $dsql->Execute('me', $query);

  $n=1;

  while($row=$dsql->GetArray())

  {

  $bigtypes[$row['id']]=$evalue=$disorder=$n * 500;

  $dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)

  VALUES('{$row['name']}','$evalue','nativeplace','$disorder','0'); ");

  $n++;

  }

  $stypes=array();

  foreach($bigtypes as $k=>$v)

  {

  $query="SELECT * FROM `dede_area` WHERE reid=$k order by id asc";

  $dsql->Execute('me', $query);

  $n=1;

  while($row=$dsql->GetArray())

  {

  $stypes[$row['id']]=$evalue=$disorder=$v + $n;

  $dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)

  VALUES('{$row['name']}','$evalue','nativeplace','$disorder','0'); ");

  $n++;

  }

  }

  WriteEnumsCache('nativeplace');

  ShowMsg("成功导入所有旧的地区数据!", "stepselect_main.php?egroup=nativeplace");

  exit();

  }

  else if($action=='addenum_save')

  {

  if(empty($ename) || empty($egroup))

  {

  Showmsg("类别名称或组名称不能为空!","-1");

  exit();

  }

  if($issign==1 || $topvalue==0)

  {

  $enames=explode(',', $ename);

  foreach($enames as $ename)

  {

  $arr=$dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND (evalue MOD 500)=0 ORDER BY disorder DESC ");

  if(!is_array($arr)) $disorder=$evalue=($issign==1 ? 1 : 500);

  else $disorder=$evalue=$arr['disorder'] + ($issign==1 ? 1 : 500);

  $father=intval(floor($evalue/500))*500;

  $dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`,`father`)

  VALUES('$ename','$evalue','$egroup','$disorder','$issign','$father'); ");

  }

  WriteEnumsCache($egroup);

  ShowMsg("成功添加枚举分类!".$dsql->GetError(), $ENV_GOBACK_URL);

  exit();

  } else if ($issign==2 && $topvalue !=0)

  {

  $minid=$topvalue;

  $maxnum=500; // 三级子类***多500个

  $enames=explode(',', $ename);

  foreach ($enames as $ename)

  {

  $arr=$dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND evalue LIKE '$topvalue.%%%' ORDER BY evalue DESC ");

  if(!is_array($arr))

  {

  $disorder=$minid;

  $evalue=$minid.'.001';

  }

  else

  {

  $disorder=$minid;

  preg_match("#([0-9]{1,})\.([0-9]{1,})#", $arr['evalue'], $matchs);

  $addvalue=$matchs[2] + 1;

  $addvalue=sprintf("%03d", $addvalue);

  $evalue=$matchs[1].'.'.$addvalue;

  }

  $father=intval(floor($evalue/500))*500;

  $sql="INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`,`father`)

  VALUES('$ename','$evalue','$egroup','$disorder','$issign','$father'); ";

  // echo $sql;exit;

  $dsql->ExecuteNoneQuery($sql);

  }

  // echo $minid;

  WriteEnumsCache($egroup);

  ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);

  exit();

  } else {

  $minid=$topvalue;

  $maxid=$topvalue + 500;

  $enames=explode(',', $ename);

  foreach($enames as $ename)

  {

  $arr=$dsql->GetOne("SELECT * FROM `dede_sys_enum` WHERE egroup='$egroup' AND evalue>$minid AND evalue<$maxid ORDER BY evalue DESC ");

  if(!is_array($arr))

  {

  $disorder=$evalue=$minid+1;

  }

  else

  {

  $disorder=$arr['disorder']+1;

  $evalue=$arr['evalue']+1;

  }

  $father=intval(floor($evalue/500))*500;

  $dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`,`father`)

  VALUES('$ename','$evalue','$egroup','$disorder','$issign','$father'); ");

  }

  WriteEnumsCache($egroup);

  ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);

  exit();

  }

  }

  else if($action=='upenum')

  {

  $ename=trim(preg_replace("# └─(─){1,}#", '', $ename));

  $row=$dsql->GetOne("SELECT egroup FROM `dede_sys_enum` WHERE id='$aid' ");

  WriteEnumsCache($row['egroup']);

  $dsql->ExecuteNoneQuery("UPDATE `dede_sys_enum` SET `ename`='$ename',`disorder`='$disorder' WHERE id='$aid'; ");

  ShowMsg("成功修改一个枚举!", $ENV_GOBACK_URL);

  exit();

  }

  else if($action=='upallcache')

  {

  if(!isset($egroup)) $egroup='';

  WriteEnumsCache($egroup);

  ShowMsg("成更新枚举缓存!", $ENV_GOBACK_URL);

  exit();

  }



时间:(2024-02-06 13:43:26)
本站资源均来自互联网或会员发布,如果不小心侵犯了您的权益请与我们联系。我们将立即删除!谢谢!