国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 6 години
преди 6 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * 编辑自定义表单字段
  4. *
  5. * @version $Id: diy_field_edit.php 1 18:31 2010年7月12日Z tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2018, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license/v6
  10. * @link https://www.dedebiz.com
  11. */
  12. require_once(dirname(__FILE__)."/config.php");
  13. //增加权限检查
  14. require_once(DEDEINC."/dedetag.class.php");
  15. require_once(DEDEADMIN."/inc/inc_admin_channel.php");
  16. if(empty($action)) $action = '';
  17. //获取模型信息
  18. $mysql_version = $dsql->GetVersion();
  19. $mysql_versions = explode(".",trim($mysql_version));
  20. $mysql_version = $mysql_versions[0].".".$mysql_versions[1];
  21. $row = $dsql->GetOne("SELECT `table`,`info` FROM #@__diyforms WHERE diyid='$diyid'");
  22. $fieldset = $row['info'];
  23. $trueTable = $row['table'];
  24. $dtp = new DedeTagParse();
  25. $dtp->SetNameSpace("field","<",">");
  26. $dtp->LoadSource($fieldset);
  27. foreach($dtp->CTags as $ctag)
  28. {
  29. if(strtolower($ctag->GetName())==strtolower($fname)) break;
  30. }
  31. //字段类型信息
  32. $ds = file(DEDEADMIN."/inc/fieldtype.txt");
  33. foreach($ds as $d)
  34. {
  35. $dds = explode(',',trim($d));
  36. $fieldtypes[$dds[0]] = $dds[1];
  37. }
  38. //保存更改
  39. /*--------------------
  40. function _SAVE()
  41. ----------------------*/
  42. if($action=='save')
  43. {
  44. if(!isset($fieldtypes[$dtype]))
  45. {
  46. ShowMsg("你修改的是系统专用类型的数据,禁止操作!","-1");
  47. exit();
  48. }
  49. //检测数据库是否存在附加表,不存在则新建一个
  50. $tabsql = "CREATE TABLE IF NOT EXISTS `$trueTable`(
  51. `id` int(10) unsigned NOT NULL auto_increment,
  52. `ifcheck` tinyint(1) NOT NULL default '0',
  53. ";
  54. if($mysql_version < 4.1)
  55. {
  56. $tabsql .= " PRIMARY KEY (`id`)\r\n) TYPE=MyISAM; ";
  57. }
  58. else
  59. {
  60. $tabsql .= " PRIMARY KEY (`id`)\r\n) ENGINE=MyISAM DEFAULT CHARSET=".$cfg_db_language."; ";
  61. }
  62. $dsql->ExecuteNoneQuery($tabsql);
  63. //检测表里含有的字段
  64. $fields = array();
  65. $rs = $dsql->SetQuery("show fields from `$trueTable`");
  66. $dsql->Execute('a');
  67. while($nrow = $dsql->GetArray('a',MYSQL_ASSOC))
  68. {
  69. $fields[ strtolower($nrow['Field']) ] = $nrow['Type'];
  70. }
  71. //修改字段配置信息
  72. $dfvalue = $vdefault;
  73. $isnull = ($isnull==1 ? "true" : "false");
  74. $mxlen = $maxlength;
  75. $fieldname = strtolower($fname);
  76. //检测被修改的字段类型,并更新数据表
  77. $fieldinfos = GetFieldMake($dtype,$fieldname,$dfvalue,$mxlen);
  78. $ntabsql = $fieldinfos[0];
  79. $buideType = $fieldinfos[1];
  80. $tabsql = '';
  81. //检测旧数据类型,并替换为新配置
  82. foreach($dtp->CTags as $tagid=>$ctag)
  83. {
  84. if(trim($fieldname)==trim(strtolower($ctag->GetName())))
  85. {
  86. if(isset($fields[$fieldname]) && $fields[$fieldname]!=$buideType)
  87. {
  88. $tabsql = "ALTER TABLE `$trueTable` CHANGE `$fieldname` ".$ntabsql;
  89. $dsql->ExecuteNoneQuery($tabsql);
  90. }
  91. else if(!isset($fields[$fieldname]))
  92. {
  93. $tabsql = "ALTER TABLE `$trueTable` ADD ".$ntabsql;
  94. $dsql->ExecuteNoneQuery($tabsql);
  95. }
  96. else
  97. {
  98. $tabsql = '';
  99. }
  100. $dtp->Assign($tagid,stripslashes($fieldstring), FALSE);
  101. break;
  102. }
  103. }
  104. $oksetting = $dtp->GetResultNP();
  105. $oksetting = addslashes($oksetting);
  106. $dsql->ExecuteNoneQuery("UPDATE #@__diyforms SET info='$oksetting' WHERE diyid='$diyid' ");
  107. ShowMsg("成功更改一个字段的配置!","diy_edit.php?diyid={$diyid}");
  108. exit();
  109. }
  110. /*------------------
  111. 删除字段
  112. function _DELETE()
  113. -------------------*/
  114. else if($action=="delete")
  115. {
  116. //检测旧数据类型,并替换为新配置
  117. foreach($dtp->CTags as $tagid=>$ctag)
  118. {
  119. if(strtolower($ctag->GetName())==strtolower($fname))
  120. {
  121. $dtp->Assign($tagid,"#@Delete@#");
  122. }
  123. }
  124. $oksetting = addslashes($dtp->GetResultNP());
  125. $dsql->ExecuteNoneQuery("UPDATE #@__diyforms SET info='$oksetting' WHERE diyid='$diyid' ");
  126. $dsql->ExecuteNoneQuery("ALTER TABLE `$trueTable` DROP `$fname` ");
  127. ShowMsg("成功删除一个字段!","diy_edit.php?diyid=$diyid");
  128. exit();
  129. }
  130. require_once(DEDEADMIN."/templets/diy_field_edit.htm");