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

161 lines
5.4KB

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