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