国内流行的内容管理系统(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.

122 lines
3.7KB

  1. <?php
  2. /**
  3. * 增加自定义表单字段
  4. *
  5. * @version $Id: diy_field_add.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(DEDEADMIN.'/inc/inc_admin_channel.php');
  15. if(empty($action)) $action = '';
  16. $mysql_version = $dsql->GetVersion();
  17. $mysql_versions = explode(".",trim($mysql_version));
  18. $mysql_version = $mysql_versions[0].".".$mysql_versions[1];
  19. /*----------------------
  20. function Save()
  21. ---------------------*/
  22. if($action=='save')
  23. {
  24. //模型信息
  25. $fieldname = strtolower($fieldname);
  26. $row = $dsql->GetOne("SELECT `table`,`info` FROM #@__diyforms WHERE diyid='$diyid'");
  27. $fieldset = $row['info'];
  28. require_once(DEDEINC."/dedetag.class.php");
  29. $dtp = new DedeTagParse();
  30. $dtp->SetNameSpace("field","<",">");
  31. $dtp->LoadSource($fieldset);
  32. $trueTable = $row['table'];
  33. //修改字段配置信息
  34. $dfvalue = trim($vdefault);
  35. $isnull = ($isnull==1 ? "true" : "false");
  36. $mxlen = $maxlength;
  37. //检测被修改的字段类型
  38. $fieldinfos = GetFieldMake($dtype,$fieldname,$dfvalue,$mxlen);
  39. $ntabsql = $fieldinfos[0];
  40. $buideType = $fieldinfos[1];
  41. $rs = $dsql->ExecuteNoneQuery(" ALTER TABLE `$trueTable` ADD $ntabsql ");
  42. if(!$rs)
  43. {
  44. $gerr = $dsql->GetError();
  45. ShowMsg("增加字段失败,错误提示为:".$gerr,"javascript:;");
  46. exit();
  47. }
  48. $ok = FALSE;
  49. //检测旧配置信息,并替换为新配置
  50. if(is_array($dtp->CTags))
  51. {
  52. //遍历旧配置
  53. foreach($dtp->CTags as $tagid=>$ctag)
  54. {
  55. if($fieldname == strtolower($ctag->GetName()))
  56. {
  57. $dtp->Assign($tagid,stripslashes($fieldstring), FALSE);
  58. $ok = TRUE;
  59. break;
  60. }
  61. }
  62. $oksetting = $ok ? $dtp->GetResultNP() : $fieldset."\n".stripslashes($fieldstring);
  63. }
  64. else
  65. {
  66. //原来的配置为空
  67. $oksetting = $fieldset."\n".stripslashes($fieldstring);
  68. }
  69. $addlist = GetAddFieldList($dtp,$oksetting);
  70. $oksetting = addslashes($oksetting);
  71. $rs = $dsql->ExecuteNoneQuery("Update #@__diyforms set `info`='$oksetting' where diyid='$diyid' ");
  72. if(!$rs)
  73. {
  74. $grr = $dsql->GetError();
  75. ShowMsg("保存节点配置出错!".$grr,"javascript:;");
  76. exit();
  77. }
  78. ShowMsg("成功增加一个字段!","diy_edit.php?diyid=$diyid");
  79. exit();
  80. }
  81. //检测模型相关信息,并初始化相关数据
  82. /*----------------------
  83. function ShowPage()
  84. ---------------------*/
  85. $row = $dsql->GetOne("SELECT `table` FROM #@__diyforms WHERE diyid='$diyid'");
  86. $trueTable = $row['table'];
  87. $tabsql = "CREATE TABLE IF NOT EXISTS `$trueTable`(
  88. `id` int(10) unsigned NOT NULL auto_increment,
  89. `ifcheck` tinyint(1) NOT NULL default '0',
  90. ";
  91. if($mysql_version < 4.1)
  92. {
  93. $tabsql .= " PRIMARY KEY (`id`)\r\n) TYPE=MyISAM; ";
  94. }
  95. else
  96. {
  97. $tabsql .= " PRIMARY KEY (`id`)\r\n) ENGINE=MyISAM DEFAULT CHARSET=".$cfg_db_language."; ";
  98. }
  99. $dsql->ExecuteNoneQuery($tabsql);
  100. //检测附加表里含有的字段
  101. $fields = array();
  102. $rs = $dsql->SetQuery("show fields from `$trueTable`");
  103. $dsql->Execute('a');
  104. while($nrow = $dsql->GetArray('a',MYSQL_ASSOC))
  105. {
  106. $fields[strtolower($nrow['Field'])] = 1;
  107. }
  108. $f = '';
  109. foreach($fields as $k=>$v)
  110. {
  111. $f .= ($f=='' ? $k : ' '.$k);
  112. }
  113. require_once(DEDEADMIN."/templets/diy_field_add.htm");