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

121 lines
3.7KB

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