PageRenderTime 71ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/e/class/moddofun.php

https://github.com/westeast/xwdede
PHP | 2271 lines | 2008 code | 50 blank | 213 comment | 246 complexity | c240a5afacc357851f0d41e3947c6c44 MD5 | raw file
  1. <?php
  2. //************************************ 数据表 ************************************
  3. //建立初始表
  4. function AddTableDefault($tbname,$tid){
  5. global $empire,$dbtbpre,$phome_db_dbchar;
  6. include("db/DefaultTable.php");
  7. //复制存档表
  8. $otb=$dbtbpre."ecms_".$tbname;
  9. $tb=$otb."_doc";
  10. CopyEcmsTb($otb,$tb);
  11. $odtb=$dbtbpre."ecms_".$tbname."_data_1";
  12. $dtb=$tb."_data";
  13. CopyEcmsTb($odtb,$dtb);
  14. }
  15. //复制数据表
  16. function CopyNewTable($add,$userid,$username){
  17. global $empire,$dbtbpre;
  18. $tid=(int)$add['tid'];
  19. $newtbname=strtolower(trim($add[newtbname]));
  20. if(!$tid||empty($newtbname)||!$add[tname])
  21. {
  22. printerror("EmptyTbname","");
  23. }
  24. CheckLevel($userid,$username,$classid,"table");//操作权限
  25. $add[yhid]=(int)$add[yhid];
  26. $tr=$empire->fetch1("select tbname from {$dbtbpre}enewstable where tid=$tid");
  27. if(!$tr[tbname])
  28. {
  29. printerror("EmptyTbname","");
  30. }
  31. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$newtbname' limit 1");
  32. if($num)
  33. {
  34. printerror("ReTbname","history.go(-1)");
  35. }
  36. $sql=$empire->query("insert into {$dbtbpre}enewstable(tbname,tname,tsay,isdefault,datatbs,deftb,yhid) values('$newtbname','$add[tname]','$add[tsay]',0,',1,','1','$add[yhid]');");
  37. $newtid=$empire->lastid();
  38. //复制表
  39. CopyEcmsTb($dbtbpre."ecms_".$tr['tbname'],$dbtbpre."ecms_".$newtbname); //内容表
  40. CopyEcmsTb($dbtbpre."ecms_".$tr['tbname']."_data_1",$dbtbpre."ecms_".$newtbname."_data_1"); //内容副表
  41. CopyEcmsTb($dbtbpre."ecms_".$tr['tbname']."_doc",$dbtbpre."ecms_".$newtbname."_doc"); //归档表
  42. CopyEcmsTb($dbtbpre."ecms_".$tr['tbname']."_doc_data",$dbtbpre."ecms_".$newtbname."_doc_data"); //归档副表
  43. CopyEcmsTb($dbtbpre."ecms_infoclass_".$tr['tbname'],$dbtbpre."ecms_infoclass_".$newtbname); //采集节点附加表
  44. CopyEcmsTb($dbtbpre."ecms_infotmp_".$tr['tbname'],$dbtbpre."ecms_infotmp_".$newtbname); //采集数据临时表
  45. //字段数据
  46. $fsql=$empire->query("select * from {$dbtbpre}enewsf where tid=$tid order by fid");
  47. while($fr=$empire->fetch($fsql))
  48. {
  49. $usql=$empire->query("insert into {$dbtbpre}enewsf(f,fname,fform,fhtml,fzs,isadd,isshow,iscj,cjhtml,myorder,ftype,flen,dotemp,tid,tbname,savetxt,fvalue,iskey,tobr,dohtml,qfhtml,isonly,linkfieldval,samedata,fformsize,tbdataf,ispage,adddofun,editdofun,qadddofun,qeditdofun,linkfieldtb,linkfieldshow,editorys) values('$fr[f]','$fr[fname]','$fr[fform]','".addslashes(addslashes(stripSlashes($fr['fhtml'])))."','".addslashes(stripSlashes($fr[fzs]))."',$fr[isadd],$fr[isshow],$fr[iscj],'".addslashes(addslashes(stripSlashes($fr[cjhtml])))."',$fr[myorder],'$fr[ftype]','$fr[flen]',$fr[dotemp],$newtid,'$newtbname',$fr[savetxt],'".addslashes(addslashes(stripSlashes($fr[fvalue])))."',$fr[iskey],$fr[tobr],$fr[dohtml],'".addslashes(addslashes(stripSlashes($fr[qfhtml])))."','$fr[isonly]','".addslashes(stripSlashes($fr[linkfieldval]))."','$fr[samedata]','".addslashes(stripSlashes($fr[fformsize]))."','$fr[tbdataf]','$fr[ispage]','".addslashes(stripSlashes($fr[adddofun]))."','".addslashes(stripSlashes($fr[editdofun]))."','".addslashes(stripSlashes($fr[qadddofun]))."','".addslashes(stripSlashes($fr[qeditdofun]))."','".addslashes(stripSlashes($fr[linkfieldtb]))."','".addslashes(stripSlashes($fr[linkfieldshow]))."','$fr[editorys]');");
  50. }
  51. TogSaveTxtF(1);//公共变量
  52. GetConfig(1);//更新缓存
  53. if($sql)
  54. {
  55. //操作日志
  56. insert_dolog("tid=".$tid."<br>tb=".$tr[tbname]."<br>newtid=".$newtid."<br>newtb=".$newtbname);
  57. printerror("CopyTbSuccess","db/ListTable.php");
  58. }
  59. else
  60. {
  61. printerror("DbError","");
  62. }
  63. }
  64. //建立数据表
  65. function AddTable($add,$userid,$username){
  66. global $empire,$dbtbpre;
  67. $add[tbname]=strtolower(trim($add[tbname]));
  68. if(!$add[tbname]||!$add[tname])
  69. {
  70. printerror("EmptyTbname","history.go(-1)");
  71. }
  72. //操作权限
  73. CheckLevel($userid,$username,$classid,"table");
  74. $add[yhid]=(int)$add[yhid];
  75. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$add[tbname]' limit 1");
  76. if($num)
  77. {
  78. printerror("ReTbname","history.go(-1)");
  79. }
  80. $sql=$empire->query("insert into {$dbtbpre}enewstable(tbname,tname,tsay,isdefault,datatbs,deftb,yhid) values('$add[tbname]','$add[tname]','$add[tsay]',0,',1,','1','$add[yhid]');");
  81. $tid=$empire->lastid();
  82. //初使化表
  83. AddTableDefault($add[tbname],$tid);
  84. GetConfig(1);//更新缓存
  85. if($sql)
  86. {
  87. //操作日志
  88. insert_dolog("tid=".$tid."<br>tbname=".$add[tbname]);
  89. printerror("AddTbSuccess","db/AddTable.php?enews=AddTable");
  90. }
  91. else
  92. {
  93. printerror("DbError","history.go(-1)");
  94. }
  95. }
  96. //修改数据表
  97. function EditTable($add,$userid,$username){
  98. global $empire,$dbtbpre;
  99. $add[tbname]=strtolower(trim($add[tbname]));
  100. $tid=(int)$add[tid];
  101. if(!$add[tbname]||!$add[tname]||!$tid)
  102. {
  103. printerror("EmptyTbname","history.go(-1)");
  104. }
  105. //操作权限
  106. CheckLevel($userid,$username,$classid,"table");
  107. $add[yhid]=(int)$add[yhid];
  108. //改变数据表名
  109. if($add[tbname]!=$add[oldtbname])
  110. {
  111. $tbnum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$add[tbname]' and tid<>$tid limit 1");
  112. if($tbnum)
  113. {
  114. printerror("ReTbname","history.go(-1)");
  115. }
  116. $tbr=$empire->fetch1("select tid,isdefault,datatbs,deftb from {$dbtbpre}enewstable where tid='$tid' limit 1");
  117. if(!$tbr['tid'])
  118. {
  119. printerror("EmptyTbname","history.go(-1)");
  120. }
  121. //主表
  122. $empire->query("ALTER TABLE `{$dbtbpre}ecms_".$add[oldtbname]."` RENAME `{$dbtbpre}ecms_".$add[tbname]."`;");
  123. //副表
  124. if($tbr['datatbs'])
  125. {
  126. $dtbr=explode(',',$tbr['datatbs']);
  127. $count=count($dtbr);
  128. for($i=1;$i<$count-1;$i++)
  129. {
  130. $empire->query("ALTER TABLE `{$dbtbpre}ecms_".$add[oldtbname]."_data_".$dtbr[$i]."` RENAME `{$dbtbpre}ecms_".$add[tbname]."_data_".$dtbr[$i]."`;");
  131. }
  132. }
  133. //归档表
  134. $empire->query("ALTER TABLE `{$dbtbpre}ecms_".$add[oldtbname]."_doc` RENAME `{$dbtbpre}ecms_".$add[tbname]."_doc`;");
  135. $empire->query("ALTER TABLE `{$dbtbpre}ecms_".$add[oldtbname]."_doc_data` RENAME `{$dbtbpre}ecms_".$add[tbname]."_doc_data`;");
  136. //采集
  137. $empire->query("ALTER TABLE `{$dbtbpre}ecms_infoclass_".$add[oldtbname]."` RENAME `{$dbtbpre}ecms_infoclass_".$add[tbname]."`;");
  138. $empire->query("ALTER TABLE `{$dbtbpre}ecms_infotmp_".$add[oldtbname]."` RENAME `{$dbtbpre}ecms_infotmp_".$add[tbname]."`;");
  139. //字段
  140. $empire->query("update {$dbtbpre}enewsf set tbname='$add[tbname]' where tid='$tid'");
  141. //栏目
  142. $empire->query("update {$dbtbpre}enewsclass set tbname='$add[tbname]' where tid='$tid'");
  143. $empire->query("update {$dbtbpre}enewszt set tbname='$add[tbname]' where tid='$tid'");
  144. $empire->query("update {$dbtbpre}enewsinfoclass set tbname='$add[tbname]' where tid='$tid'");
  145. $empire->query("update {$dbtbpre}enewsmod set tbname='$add[tbname]' where tid='$tid'");
  146. //搜索
  147. $empire->query("update {$dbtbpre}enewssearch set tbname='$add[tbname]' where tbname='$add[oldtbname]'");
  148. $empire->query("update {$dbtbpre}enewssearchall_load set tbname='$add[tbname]' where tbname='$add[oldtbname]'");
  149. //默认表
  150. if($tbr['isdefault'])
  151. {
  152. $empire->query("update {$dbtbpre}enewspublic set tbname='$add[tbname]',tid='$tid'");
  153. }
  154. //文本型
  155. TogSaveTxtF(1);
  156. }
  157. $sql=$empire->query("update {$dbtbpre}enewstable set tbname='$add[tbname]',tname='$add[tname]',tsay='$add[tsay]',yhid='$add[yhid]' where tid='$tid'");
  158. GetConfig(1);//更新缓存
  159. if($sql)
  160. {
  161. //操作日志
  162. insert_dolog("tid=".$tid."<br>tbname=".$add[tbname]);
  163. printerror("EditTbSuccess","db/ListTable.php");
  164. }
  165. else
  166. {
  167. printerror("DbError","history.go(-1)");
  168. }
  169. }
  170. //删除数据表
  171. function DelTable($tid,$userid,$username){
  172. global $empire,$dbtbpre;
  173. $tid=(int)$tid;
  174. if(!$tid)
  175. {
  176. printerror("NotChangeTb","");
  177. }
  178. //操作权限
  179. CheckLevel($userid,$username,$classid,"table");
  180. $r=$empire->fetch1("select tid,tbname,isdefault,datatbs,deftb from {$dbtbpre}enewstable where tid='$tid'");
  181. if(empty($r[tid]))
  182. {
  183. printerror("NotChangeTb","");
  184. }
  185. //默认表
  186. if($r['isdefault'])
  187. {
  188. printerror("NotDelDefaultTb","");
  189. }
  190. $sql=$empire->query("delete from {$dbtbpre}enewstable where tid='$tid'");
  191. //删除数据表
  192. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_".$r[tbname].";");
  193. if($r['datatbs'])
  194. {
  195. $dtbr=explode(',',$r['datatbs']);
  196. $count=count($dtbr);
  197. for($i=1;$i<$count-1;$i++)
  198. {
  199. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_".$r[tbname]."_data_".$dtbr[$i].";");
  200. }
  201. }
  202. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_infoclass_".$r[tbname].";");
  203. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_infotmp_".$r[tbname].";");
  204. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_".$r[tbname]."_doc;");
  205. $empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_".$r[tbname]."_doc_data;");
  206. //删除数据
  207. $empire->query("delete from {$dbtbpre}enewsf where tid='$tid'");
  208. $empire->query("delete from {$dbtbpre}enewsmod where tid='$tid'");
  209. $empire->query("delete from {$dbtbpre}enewsinfoclass where tid='$tid'");
  210. //文本型
  211. TogSaveTxtF(1);
  212. GetConfig(1);//更新缓存
  213. if($sql)
  214. {
  215. //操作日志
  216. insert_dolog("tid=".$tid."<br>tbname=".$r[tbname]);
  217. printerror("DelTbSuccess","db/ListTable.php");
  218. }
  219. else
  220. {
  221. printerror("DbError","history.go(-1)");
  222. }
  223. }
  224. //默认数据表
  225. function DefaultTable($tid,$userid,$username){
  226. global $empire,$dbtbpre;
  227. $tid=(int)$tid;
  228. if(!$tid)
  229. {
  230. printerror("NotChangeDefaultTb","history.go(-1)");
  231. }
  232. //操作权限
  233. CheckLevel($userid,$username,$classid,"table");
  234. $r=$empire->fetch1("select tid,tbname from {$dbtbpre}enewstable where tid='$tid'");
  235. if(empty($r[tid]))
  236. {
  237. printerror("NotChangeDefaultTb","history.go(-1)");
  238. }
  239. $usql=$empire->query("update {$dbtbpre}enewstable set isdefault=0");
  240. $sql=$empire->query("update {$dbtbpre}enewstable set isdefault=1 where tid='$tid'");
  241. $upsql=$empire->query("update {$dbtbpre}enewspublic set tbname='$r[tbname]',tid='$tid'");
  242. GetConfig(1);//更新缓存
  243. if($sql&&$usql&&$upsql)
  244. {
  245. //操作日志
  246. insert_dolog("tid=".$tid."<br>tbname=".$r[tbname]);
  247. printerror("DefaultTableSuccess","db/ListTable.php");
  248. }
  249. else
  250. {
  251. printerror("DbError","history.go(-1)");
  252. }
  253. }
  254. //增加副表分表
  255. function AddDataTable($add,$userid,$username){
  256. global $empire,$dbtbpre;
  257. //操作权限
  258. CheckLevel($userid,$username,$classid,"table");
  259. $tid=(int)$add['tid'];
  260. $tbname=RepPostVar($add['tbname']);
  261. $datatb=(int)$add['datatb'];
  262. if(!$tid||!$tbname||!$datatb)
  263. {
  264. printerror("EmptyDataTable","history.go(-1)");
  265. }
  266. $tr=$empire->fetch1("select tid,datatbs from {$dbtbpre}enewstable where tid='$tid'");
  267. if(!$tr['tid'])
  268. {
  269. printerror("EmptyDataTable","history.go(-1)");
  270. }
  271. if(strstr($tr['datatbs'],','.$datatb.','))
  272. {
  273. printerror("ReDataTable","history.go(-1)");
  274. }
  275. if(empty($tr['datatbs']))
  276. {
  277. $tr['datatbs']=',';
  278. }
  279. $newdatatbs=$tr['datatbs'].$datatb.',';
  280. //建表
  281. $odtb=$dbtbpre."ecms_".$tbname."_data_1";
  282. $dtb=$dbtbpre."ecms_".$tbname."_data_".$datatb;
  283. CopyEcmsTb($odtb,$dtb);
  284. $sql=$empire->query("update {$dbtbpre}enewstable set datatbs='$newdatatbs' where tid='$tid'");
  285. GetConfig(1);//更新缓存
  286. if($sql)
  287. {
  288. //操作日志
  289. insert_dolog("tid=".$tid."<br>tbname=".$tbname."&datatb=$datatb");
  290. printerror("AddDataTableSuccess","db/ListDataTable.php?tid=$tid&tbname=$tbname");
  291. }
  292. else
  293. {
  294. printerror("DbError","history.go(-1)");
  295. }
  296. }
  297. //默认副表存放表
  298. function DefDataTable($add,$userid,$username){
  299. global $empire,$dbtbpre;
  300. //操作权限
  301. CheckLevel($userid,$username,$classid,"table");
  302. $tid=(int)$add['tid'];
  303. $tbname=RepPostVar($add['tbname']);
  304. $datatb=(int)$add['datatb'];
  305. if(!$tid||!$tbname||!$datatb)
  306. {
  307. printerror("NotChangeDataTable","history.go(-1)");
  308. }
  309. $tr=$empire->fetch1("select tid,datatbs from {$dbtbpre}enewstable where tid='$tid'");
  310. if(!$tr['tid'])
  311. {
  312. printerror("NotChangeDataTable","history.go(-1)");
  313. }
  314. if(!strstr($tr['datatbs'],','.$datatb.','))
  315. {
  316. printerror("NotChangeDataTable","history.go(-1)");
  317. }
  318. $sql=$empire->query("update {$dbtbpre}enewstable set deftb='$datatb' where tid='$tid'");
  319. GetConfig(1);//更新缓存
  320. if($sql)
  321. {
  322. //操作日志
  323. insert_dolog("tid=".$tid."<br>tbname=".$tbname."&datatb=$datatb");
  324. printerror("DefDataTableSuccess","db/ListDataTable.php?tid=$tid&tbname=$tbname");
  325. }
  326. else
  327. {
  328. printerror("DbError","history.go(-1)");
  329. }
  330. }
  331. //删除副表分表
  332. function DelDataTable($add,$userid,$username){
  333. global $empire,$dbtbpre,$emod_r,$class_r;
  334. //操作权限
  335. CheckLevel($userid,$username,$classid,"table");
  336. $tid=(int)$add['tid'];
  337. $tbname=RepPostVar($add['tbname']);
  338. $datatb=(int)$add['datatb'];
  339. if(!$tid||!$tbname||!$datatb)
  340. {
  341. printerror("NotChangeDataTable","history.go(-1)");
  342. }
  343. $tr=$empire->fetch1("select tid,tbname,datatbs,deftb from {$dbtbpre}enewstable where tid='$tid'");
  344. if(!$tr['tid'])
  345. {
  346. printerror("NotChangeDataTable","history.go(-1)");
  347. }
  348. if(!strstr($tr['datatbs'],','.$datatb.','))
  349. {
  350. printerror("NotChangeDataTable","history.go(-1)");
  351. }
  352. if($tr['deftb']==$datatb||$datatb==1)
  353. {
  354. printerror("NotDelDefDataTable","history.go(-1)");
  355. }
  356. $newdatatbs=str_replace(','.$datatb.',',',',$tr['datatbs']);
  357. $sql=$empire->query("update {$dbtbpre}enewstable set datatbs='$newdatatbs' where tid='$tid'");
  358. //删除信息
  359. $infosql=$empire->query("select * from {$dbtbpre}ecms_".$tr[tbname]." where stb='$datatb'");
  360. while($infor=$empire->fetch($infosql))
  361. {
  362. $mid=$class_r[$infor[classid]]['modid'];
  363. $pf=$emod_r[$mid]['pagef'];
  364. $stf=$emod_r[$mid]['savetxtf'];
  365. //分页字段
  366. if($pf)
  367. {
  368. if(strstr($emod_r[$mid]['tbdataf'],','.$pf.','))
  369. {
  370. $finfor=$empire->fetch1("select ".$pf." from {$dbtbpre}ecms_".$tr[tbname]."_data_".$datatb." where id='$infor[id]'");
  371. $infor[$pf]=$finfor[$pf];
  372. }
  373. }
  374. //存文本
  375. if($stf)
  376. {
  377. $newstextfile=$infor[$stf];
  378. $infor[$stf]=GetTxtFieldText($infor[$stf]);
  379. DelTxtFieldText($newstextfile);//删除文件
  380. }
  381. //删除信息文件
  382. DelNewsFile($infor[filename],$infor[newspath],$infor[classid],$infor[$pf],$infor[groupid]);
  383. //删除其它表记录
  384. $empire->query("delete from {$dbtbpre}enewswfinfo where id='$infor[id]' and classid='$infor[classid]'");
  385. $empire->query("delete from {$dbtbpre}enewswfinfolog where id='$infor[id]' and classid='$infor[classid]'");
  386. $empire->query("delete from {$dbtbpre}enewsinfovote where id='$infor[id]' and classid='$infor[classid]'");
  387. $empire->query("delete from {$dbtbpre}enewsdiggips where id='$infor[id]' and classid='$infor[classid]'");
  388. //删除附件
  389. DelNewsTheFile($infor['id'],$infor['classid']);
  390. }
  391. $deltb=$empire->query("delete from {$dbtbpre}ecms_".$tr[tbname]." where stb='$datatb'");
  392. //删除表
  393. $deltb=$empire->query("DROP TABLE IF EXISTS {$dbtbpre}ecms_".$tr[tbname]."_data_".$datatb.";");
  394. GetConfig(1);//更新缓存
  395. if($sql)
  396. {
  397. //操作日志
  398. insert_dolog("tid=".$tid."<br>tbname=".$tr[tbname]."&datatb=$datatb");
  399. printerror("DelDataTableSuccess","db/ListDataTable.php?tid=$tid&tbname=$tr[tbname]");
  400. }
  401. else
  402. {
  403. printerror("DbError","history.go(-1)");
  404. }
  405. }
  406. //************************************ 字段 ************************************
  407. //返回字段值
  408. function ReturnFvalue($value){
  409. $value=str_replace("\r\n","|",$value);
  410. return $value;
  411. }
  412. //取得表单元素html代码
  413. function GetFform($type,$f,$fvalue,$linkfieldval,$fformsize='',$add){
  414. if($type=="select"||$type=="radio"||$type=="checkbox")
  415. {
  416. return GetFformSelect($type,$f,$fvalue,$fformsize);
  417. }
  418. $file="../data/html/fhtml.txt";
  419. $data=ReadFiletext($file);
  420. //特殊字段
  421. if($f=="newstext"||$f=="writer"||$f=="befrom"||$f=="downpath"||$f=="onlinepath"||$f=="morepic"||$f=="playerid")
  422. {
  423. $type=$f;
  424. }
  425. $exp="[!--".$type."--]";
  426. $r=explode($exp,$data);
  427. $string=str_replace("[!--enews.var--]",$f,$r[1]);
  428. $string=str_replace("[!--enews.def.val--]",$fvalue,$string);
  429. if($type=='linkfield')//选择外表关联字段
  430. {
  431. $string=str_replace("[!--enews.cfield.var--]",$add[linkfieldval],$string);
  432. $string=str_replace("[!--enews.vfield.var--]",$add[linkfieldshow],$string);
  433. $string=str_replace("[!--enews.ctbname--]",$add[linkfieldtb],$string);
  434. }
  435. elseif($type=='linkfieldselect')//下拉外表关联字段
  436. {
  437. $selectf=$add[linkfieldval]==$add[linkfieldshow]?$add[linkfieldval]:$add[linkfieldval].','.$add[linkfieldshow];
  438. $string=str_replace("[!--enews.cfield.var--]",$add[linkfieldval],$string);
  439. $string=str_replace("[!--enews.vfield.var--]",$add[linkfieldshow],$string);
  440. $string=str_replace("[!--enews.ctbname--]",$add[linkfieldtb],$string);
  441. $string=str_replace("[!--enews.selectf--]",$selectf,$string);
  442. }
  443. elseif($type=='editor'||$type=='newstext')//编辑器
  444. {
  445. $editortype=$add[editorys]==0?'Default':'Basic';
  446. $string=str_replace("[!--editor.type--]",$editortype,$string);
  447. $string=str_replace("[!--editor.basepath--]",'',$string);
  448. }
  449. $string=RepFformSize($f,$string,$type,$fformsize);
  450. return addslashes($string);
  451. }
  452. //取得采集表单元素html代码
  453. function GetCjform($type,$f){
  454. $file="../data/html/cjhtml.txt";
  455. $data=ReadFiletext($file);
  456. //特殊字段
  457. if($f=="downpath"||$f=="onlinepath"||$f=="morepic"||$f=="playerid")
  458. {
  459. $type=$f;
  460. }
  461. if($type=="password"||$type=="select"||$type=="radio"||$type=="checkbox"||$type=="date"||$type=="color"||$type=="linkfield"||$type=="editor"||$type=="ubbeditor"||$type=="linkfieldselect")
  462. {
  463. $type="text";
  464. }
  465. $exp="[!--".$type."--]";
  466. $r=explode($exp,$data);
  467. $string=str_replace("[!--enews.var--]",$f,$r[1]);
  468. return addslashes($string);
  469. }
  470. //取得投稿表单元素html代码
  471. function GetQFform($type,$f,$fvalue,$fformsize='',$add){
  472. if($type=="select"||$type=="radio"||$type=="checkbox")
  473. {
  474. return GetFformSelect($type,$f,$fvalue,$fformsize);
  475. }
  476. $file="../data/html/qfhtml.txt";
  477. $data=ReadFiletext($file);
  478. //特殊字段
  479. if($f=="newstext"||$f=="downpath"||$f=="onlinepath"||$f=="morepic"||$f=="playerid")
  480. {
  481. $type=$f;
  482. }
  483. $exp="[!--".$type."--]";
  484. $r=explode($exp,$data);
  485. $string=str_replace("[!--enews.var--]",$f,$r[1]);
  486. $string=str_replace("[!--enews.def.val--]",$fvalue,$string);
  487. if($type=='linkfield')//选择外表关联字段
  488. {
  489. $string=str_replace("[!--enews.cfield.var--]",$add[linkfieldval],$string);
  490. $string=str_replace("[!--enews.vfield.var--]",$add[linkfieldshow],$string);
  491. $string=str_replace("[!--enews.ctbname--]",$add[linkfieldtb],$string);
  492. }
  493. elseif($type=='linkfieldselect')//下拉外表关联字段
  494. {
  495. $selectf=$add[linkfieldval]==$add[linkfieldshow]?$add[linkfieldval]:$add[linkfieldval].','.$add[linkfieldshow];
  496. $string=str_replace("[!--enews.cfield.var--]",$add[linkfieldval],$string);
  497. $string=str_replace("[!--enews.vfield.var--]",$add[linkfieldshow],$string);
  498. $string=str_replace("[!--enews.ctbname--]",$add[linkfieldtb],$string);
  499. $string=str_replace("[!--enews.selectf--]",$selectf,$string);
  500. }
  501. elseif($type=='editor'||$type=='newstext')//编辑器
  502. {
  503. $editortype=$add[editorys]==0?'Default':'Basic';
  504. $string=str_replace("[!--editor.type--]",$editortype,$string);
  505. $string=str_replace("[!--editor.basepath--]",'',$string);
  506. }
  507. $string=RepFformSize($f,$string,$type,$fformsize);
  508. return addslashes($string);
  509. }
  510. //取得select/radio元素代码
  511. function GetFformSelect($type,$f,$fvalue,$fformsize=''){
  512. $vr=explode("|",$fvalue);
  513. $count=count($vr);
  514. $change="";
  515. $def=':default';
  516. for($i=0;$i<$count;$i++)
  517. {
  518. $val=$vr[$i];
  519. $isdef="";
  520. if(strstr($val,$def))
  521. {
  522. $dr=explode($def,$val);
  523. $val=$dr[0];
  524. $isdef="||\$ecmsfirstpost==1";
  525. }
  526. if($type=='select')
  527. {
  528. $change.="<option value=\"".$val."\"<?=\$r[".$f."]==\"".$val."\"".$isdef."?' selected':''?>>".$val."</option>";
  529. }
  530. elseif($type=='checkbox')
  531. {
  532. $change.="<input name=\"".$f."[]\" type=\"checkbox\" value=\"".$val."\"<?=strstr(\$r[".$f."],\"|".$val."|\")".$isdef."?' checked':''?>>".$val;
  533. }
  534. else
  535. {
  536. $change.="<input name=\"".$f."\" type=\"radio\" value=\"".$val."\"<?=\$r[".$f."]==\"".$val."\"".$isdef."?' checked':''?>>".$val;
  537. }
  538. }
  539. if($type=="select")
  540. {
  541. if($fformsize)
  542. {
  543. $addsize=' style="width:'.$fformsize.'"';
  544. }
  545. $change="<select name=\"".$f."\" id=\"".$f."\"".$addsize.">".$change."</select>";
  546. }
  547. return $change;
  548. }
  549. //替换表单元素长度
  550. function RepFformSize($f,$string,$type,$fformsize=''){
  551. $fformsize=ReturnDefFformSize($f,$type,$fformsize);
  552. if($type=='textarea'||$type=='editor'||$type=='ubbeditor'||$type=='newstext')
  553. {
  554. $r=explode(',',$fformsize);
  555. $string=str_replace('[!--fsize.w--]',$r[0],$string);
  556. $string=str_replace('[!--fsize.h--]',$r[1],$string);
  557. }
  558. else
  559. {
  560. $string=str_replace('[!--fsize.w--]',$fformsize,$string);
  561. }
  562. return $string;
  563. }
  564. //返回默认长度
  565. function ReturnDefFformSize($f,$type,$fformsize){
  566. if(empty($fformsize))
  567. {
  568. if($type=='textarea')
  569. {
  570. $fformsize='60,10';
  571. }
  572. elseif($type=='img')
  573. {
  574. $fformsize='45';
  575. }
  576. elseif($type=='file')
  577. {
  578. $fformsize='45';
  579. }
  580. elseif($type=='flash')
  581. {
  582. $fformsize='45';
  583. }
  584. elseif($type=='date')
  585. {
  586. $fformsize='12';
  587. }
  588. elseif($type=='color')
  589. {
  590. $fformsize='10';
  591. }
  592. elseif($type=='linkfield')
  593. {
  594. $fformsize='45';
  595. }
  596. elseif($type=='downpath')
  597. {
  598. $fformsize='45';
  599. }
  600. elseif($type=='onlinepath')
  601. {
  602. $fformsize='45';
  603. }
  604. elseif($type=='editor'||$type=='newstext')
  605. {
  606. $fformsize='100%,300';
  607. }
  608. elseif($type=='ubbeditor')
  609. {
  610. $fformsize='60,10';
  611. }
  612. }
  613. return $fformsize;
  614. }
  615. //返回字段变量
  616. function DoPostFVar($add){
  617. $add['tid']=(int)$add['tid'];
  618. $add['tbname']=RepPostVar($add['tbname']);
  619. $add['f']=RepPostVar($add['f']);
  620. //处理变量
  621. $add[iscj]=(int)$add[iscj];
  622. $add[myorder]=(int)$add[myorder];
  623. $add[savetxt]=(int)$add[savetxt];
  624. $add[iskey]=(int)$add[iskey];
  625. $add[tobr]=(int)$add[tobr];
  626. $add[dohtml]=(int)$add[dohtml];
  627. $add[isonly]=(int)$add[isonly];
  628. $add[samedata]=(int)$add[samedata];
  629. $add[tbdataf]=(int)$add[tbdataf];
  630. $add[ispage]=(int)$add[ispage];
  631. $add[editorys]=(int)$add[editorys];
  632. $add[issmalltext]=(int)$add[issmalltext];
  633. if($add[fform]=='textarea'||$add[fform]=='editor')
  634. {
  635. if($add[fformwidth]||$add[fformheight])
  636. {
  637. $add['fformsize']=$add[fformwidth].','.$add[fformheight];
  638. }
  639. }
  640. return $add;
  641. }
  642. //验证字段是否重复
  643. function CheckReTbF($add,$ecms=0){
  644. global $empire,$dbtbpre;
  645. $specialf=',oldurl,tmptime,smallurl,newsurl,titlepicl,';
  646. if(stristr($specialf,','.$add[f].','))
  647. {
  648. printerror("ReF","history.go(-1)");
  649. }
  650. //修改
  651. if($ecms==1&&$add[f]==$add[oldf])
  652. {
  653. return '';
  654. }
  655. //主表
  656. $s=$empire->query("SHOW FIELDS FROM {$dbtbpre}ecms_".$add[tbname]);
  657. $b=0;
  658. while($r=$empire->fetch($s))
  659. {
  660. if($r[Field]==$add[f])
  661. {
  662. $b=1;
  663. break;
  664. }
  665. }
  666. if($b)
  667. {
  668. printerror("ReF","history.go(-1)");
  669. }
  670. //副表
  671. $s=$empire->query("SHOW FIELDS FROM {$dbtbpre}ecms_".$add[tbname]."_data_1");
  672. $b=0;
  673. while($r=$empire->fetch($s))
  674. {
  675. if($r[Field]==$add[f])
  676. {
  677. $b=1;
  678. break;
  679. }
  680. }
  681. if($b)
  682. {
  683. printerror("ReF","history.go(-1)");
  684. }
  685. }
  686. //返回字段类型
  687. function ReturnTbFtype($add){
  688. if($add[ftype]=="TINYINT"||$add[ftype]=="SMALLINT"||$add[ftype]=="INT"||$add[ftype]=="BIGINT"||$add[ftype]=="FLOAT"||$add[ftype]=="DOUBLE")
  689. {
  690. $def=" default '0'";
  691. }
  692. elseif($add[ftype]=="VARCHAR"||$add[ftype]=="CHAR")
  693. {
  694. $def=" default ''";
  695. }
  696. elseif($add[ftype]=="DATE")
  697. {
  698. $def=" default '0000-00-00'";
  699. }
  700. elseif($add[ftype]=="DATETIME")
  701. {
  702. $def=" default '0000-00-00 00:00:00'";
  703. }
  704. else
  705. {
  706. $def='';
  707. }
  708. $type=$add[ftype];
  709. //VARCHAR
  710. if(($add[ftype]=='VARCHAR'||$add[ftype]=='CHAR')&&empty($add[flen]))
  711. {
  712. $add[flen]='255';
  713. }
  714. //字段长度
  715. if($add[flen])
  716. {
  717. if($add[ftype]!="TEXT"&&$add[ftype]!="MEDIUMTEXT"&&$add[ftype]!="LONGTEXT"&&$add[ftype]!="DATE"&&$add[ftype]!="DATETIME")
  718. {
  719. $type.="(".$add[flen].")";
  720. }
  721. }
  722. $field=$add[f]." ".$type." NOT NULL".$def;
  723. return $field;
  724. }
  725. //增加字段
  726. function AddF($add,$userid,$username){
  727. global $empire,$dbtbpre;
  728. $add=DoPostFVar($add);
  729. $tid=$add[tid];
  730. $tbname=$add[tbname];
  731. if(empty($add[f])||empty($add[fname])||!$add[tid]||!$add[tbname])
  732. {
  733. printerror("EmptyF","history.go(-1)");
  734. }
  735. CheckLevel($userid,$username,$classid,"f");//验证权限
  736. CheckReTbF($add,0);//字段是否重复
  737. //存文本
  738. if($add[savetxt]==1)
  739. {
  740. $txtnum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsf where savetxt=1 and tid='$tid'");
  741. if($txtnum)
  742. {
  743. printerror('ReTxtF','');
  744. }
  745. }
  746. //分页
  747. if($add['ispage']==1)
  748. {
  749. $pagenum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsf where ispage=1 and tid='$tid'");
  750. if($pagenum)
  751. {
  752. printerror('RePageF','');
  753. }
  754. }
  755. $add[fvalue]=ReturnFvalue($add[fvalue]);//初始化值
  756. $field=ReturnTbFtype($add);//返回字段
  757. //信息表新增字段
  758. if($add[tbdataf]==1)//附加表
  759. {
  760. $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tid='$tid'");
  761. if($tbr['datatbs'])
  762. {
  763. $dtbr=explode(',',$tbr['datatbs']);
  764. $count=count($dtbr);
  765. for($i=1;$i<$count-1;$i++)
  766. {
  767. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." add ".$field);
  768. if($add[iskey]==1)//索引
  769. {
  770. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." ADD INDEX(".$add[f].")");
  771. }
  772. }
  773. }
  774. //归档副表
  775. $asql=$empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc_data add ".$field);
  776. if($add[iskey]==1)//索引
  777. {
  778. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc_data ADD INDEX(".$add[f].")");
  779. }
  780. }
  781. else//主表
  782. {
  783. $asql=$empire->query("alter table {$dbtbpre}ecms_".$tbname." add ".$field);
  784. if($add[iskey]==1)//索引
  785. {
  786. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." ADD INDEX(".$add[f].")");
  787. }
  788. //归档主表
  789. $asql=$empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc add ".$field);
  790. if($add[iskey]==1)//索引
  791. {
  792. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc ADD INDEX(".$add[f].")");
  793. }
  794. }
  795. //采集表新增字段
  796. if($add[iscj]==1)
  797. {
  798. $asql=$empire->query("alter table {$dbtbpre}ecms_infoclass_".$tbname." add zz_".$add[f]." text not null,add z_".$add[f]." varchar(255) not null,add qz_".$add[f]." varchar(255) not null,add save_".$add[f]." varchar(10) not null;");
  799. $asql=$empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." add ".$field);
  800. }
  801. //替换代码
  802. $fhtml=GetFform($add[fform],$add[f],$add[fvalue],$add[linkfieldval],$add[fformsize],$add);
  803. $cjhtml=GetCjform($add[fform],$add[f]);
  804. $qfhtml=GetQFform($add[fform],$add[f],$add[fvalue],$add[fformsize],$add);
  805. $sql=$empire->query("insert into {$dbtbpre}enewsf(f,fname,fform,fhtml,fzs,isadd,isshow,iscj,cjhtml,myorder,ftype,flen,dotemp,tid,tbname,savetxt,fvalue,iskey,tobr,dohtml,qfhtml,isonly,linkfieldval,samedata,fformsize,tbdataf,ispage,adddofun,editdofun,qadddofun,qeditdofun,linkfieldtb,linkfieldshow,editorys,issmalltext) values('$add[f]','$add[fname]','$add[fform]','".addslashes($fhtml)."','".addslashes($add[fzs])."',1,1,$add[iscj],'".addslashes($cjhtml)."',$add[myorder],'$add[ftype]','$add[flen]',1,$tid,'$tbname',$add[savetxt],'".addslashes($add[fvalue])."',$add[iskey],$add[tobr],$add[dohtml],'".addslashes($qfhtml)."','$add[isonly]','".addslashes($add[linkfieldval])."','$add[samedata]','$add[fformsize]','$add[tbdataf]','$add[ispage]','$add[adddofun]','$add[editdofun]','$add[qadddofun]','$add[qeditdofun]','$add[linkfieldtb]','$add[linkfieldshow]','$add[editorys]','$add[issmalltext]');");
  806. $lastid=$empire->lastid();
  807. TogSaveTxtF(1);//公共变量
  808. if($add[savetxt]==1&&$add[iscj]==1)//存放文本
  809. {
  810. $tmpsql=$empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." change ".$add[f]." ".$add[f]." mediumtext not null;");
  811. }
  812. GetConfig(1);//更新缓存
  813. if($sql)
  814. {
  815. insert_dolog("fid=".$lastid."<br>f=".$add[f]);//操作日志
  816. printerror("AddFSuccess","db/AddF.php?enews=AddF&tid=$tid&tbname=$tbname");
  817. }
  818. else
  819. {
  820. printerror("DbError","history.go(-1)");
  821. }
  822. }
  823. //修改数据库字段
  824. function EditF($add,$userid,$username){
  825. global $empire,$dbtbpre;
  826. $add=DoPostFVar($add);
  827. $tid=$add[tid];
  828. $tbname=$add[tbname];
  829. $add[fid]=(int)$add['fid'];
  830. if(empty($add[f])||empty($add[fname])||empty($add[fid])||!$tid||!$tbname)
  831. {
  832. printerror("EmptyF","history.go(-1)");
  833. }
  834. CheckLevel($userid,$username,$classid,"f");//验证权限
  835. //是否系统内部字段
  836. $cr=$empire->fetch1("select * from {$dbtbpre}enewsf where fid='$add[fid]'");
  837. if(empty($cr[isadd]))
  838. {
  839. printerror("NotIsAdd","history.go(-1)");
  840. }
  841. CheckReTbF($add,1);//字段是否重复
  842. //存文本
  843. if($add[savetxt]==1&&!$cr[savetxt])
  844. {
  845. $txtnum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsf where savetxt=1 and fid<>".$add[fid]." and tid='$tid'");
  846. if($txtnum)
  847. {
  848. printerror('ReTxtF','');
  849. }
  850. }
  851. //分页
  852. if($add['ispage']==1&&!$cr[ispage])
  853. {
  854. $pagenum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsf where ispage=1 and fid<>".$add[fid]." and tid='$tid'");
  855. if($pagenum)
  856. {
  857. printerror('RePageF','');
  858. }
  859. }
  860. $add[fvalue]=ReturnFvalue($add[fvalue]);//初始化值
  861. //改变字段
  862. if($cr[f]<>$add[f]||$add[iskey]<>$cr[iskey]||$cr[iscj]<>$add[iscj]||$cr[ftype]<>$add[ftype]||$cr[flen]<>$add[flen])
  863. {
  864. $field=ReturnTbFtype($add);//返回字段
  865. //信息表
  866. if($cr[tbdataf]==1)//附加表
  867. {
  868. $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tid='$tid'");
  869. if($tbr['datatbs'])
  870. {
  871. $dtbr=explode(',',$tbr['datatbs']);
  872. $count=count($dtbr);
  873. for($i=1;$i<$count-1;$i++)
  874. {
  875. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." change ".$add[oldf]." ".$field);
  876. if($add[iskey]==1)//索引
  877. {
  878. if($cr[iskey]==0)
  879. {
  880. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." ADD INDEX(".$add[f].")");
  881. }
  882. }
  883. elseif($cr[iskey]==1&&$add[iskey]==0)//删除索引
  884. {
  885. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." DROP INDEX ".$add[oldf]);
  886. }
  887. }
  888. }
  889. //归档副表
  890. $usql=$empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc_data change ".$add[oldf]." ".$field);
  891. if($add[iskey]==1)//索引
  892. {
  893. if($cr[iskey]==0)
  894. {
  895. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc_data ADD INDEX(".$add[f].")");
  896. }
  897. }
  898. elseif($cr[iskey]==1&&$add[iskey]==0)//删除索引
  899. {
  900. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc_data DROP INDEX ".$add[oldf]);
  901. }
  902. }
  903. else//主表
  904. {
  905. $usql=$empire->query("alter table {$dbtbpre}ecms_".$tbname." change ".$add[oldf]." ".$field);
  906. if($add[iskey]==1)//索引
  907. {
  908. if($cr[iskey]==0)
  909. {
  910. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." ADD INDEX(".$add[f].")");
  911. }
  912. }
  913. elseif($cr[iskey]==1&&$add[iskey]==0)//删除索引
  914. {
  915. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." DROP INDEX ".$add[oldf]);
  916. }
  917. //归档主表
  918. $usql=$empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc change ".$add[oldf]." ".$field);
  919. if($add[iskey]==1)//索引
  920. {
  921. if($cr[iskey]==0)
  922. {
  923. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc ADD INDEX(".$add[f].")");
  924. }
  925. }
  926. elseif($cr[iskey]==1&&$add[iskey]==0)//删除索引
  927. {
  928. $keysql=$empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc DROP INDEX ".$add[oldf]);
  929. }
  930. }
  931. //采集表
  932. if($add[iscj]==1)
  933. {
  934. if($cr[iscj]==1)
  935. {
  936. $empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." change ".$add[oldf]." ".$field);
  937. $empire->query("alter table {$dbtbpre}ecms_infoclass_".$tbname." change zz_".$add[oldf]." zz_".$add[f]." text not null,change z_".$add[oldf]." z_".$add[f]." varchar(255) not null,change qz_".$add[oldf]." qz_".$add[f]." varchar(255) not null,change save_".$add[oldf]." save_".$add[f]." varchar(10) not null;");
  938. }
  939. else
  940. {
  941. $empire->query("alter table {$dbtbpre}ecms_infoclass_".$tbname." add zz_".$add[f]." text not null,add z_".$add[f]." varchar(255) not null,add qz_".$add[f]." varchar(255) not null,add save_".$add[f]." varchar(10) not null;");
  942. $empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." add ".$field);
  943. }
  944. }
  945. elseif($add[iscj]==0&&$cr[iscj]==1)
  946. {
  947. $empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." drop COLUMN ".$cr[f]);
  948. $empire->query("alter table {$dbtbpre}ecms_infoclass_".$tbname." drop COLUMN zz_".$cr[f].",drop COLUMN z_".$cr[f].",drop COLUMN qz_".$cr[f].",drop COLUMN save_".$cr[f]);
  949. }
  950. }
  951. //替换代码
  952. if($add[f]<>$cr[f]||$add[fform]<>$cr[fform]||$add[fvalue]<>$add[oldfvalue]||$cr[linkfieldtb]<>$add[linkfieldtb]||$cr[linkfieldshow]<>$add[linkfieldshow]||$cr[editorys]<>$add[editorys]||$add[linkfieldval]<>$cr[linkfieldval]||$add[fformsize]<>$cr[fformsize])
  953. {
  954. $fhtml=GetFform($add[fform],$add[f],$add[fvalue],$add[linkfieldval],$add[fformsize],$add);
  955. }
  956. else
  957. {
  958. $fhtml=AddAddsData($add[fhtml]);
  959. }
  960. $cjhtml=GetCjform($add[fform],$add[f]);
  961. if($add[f]<>$cr[f]||$add[fform]<>$cr[fform]||$add[fvalue]<>$add[oldfvalue]||$cr[linkfieldtb]<>$add[linkfieldtb]||$cr[linkfieldshow]<>$add[linkfieldshow]||$cr[editorys]<>$add[editorys]||$add[linkfieldval]<>$cr[linkfieldval]||$add[fformsize]<>$cr[fformsize])
  962. {
  963. $qfhtml=GetQFform($add[fform],$add[f],$add[fvalue],$add[fformsize],$add);
  964. }
  965. else
  966. {
  967. $qfhtml=AddAddsData($add[qfhtml]);
  968. }
  969. $sql=$empire->query("update {$dbtbpre}enewsf set f='$add[f]',fname='$add[fname]',fform='$add[fform]',fhtml='".addslashes($fhtml)."',fzs='".addslashes($add[fzs])."',iscj=$add[iscj],cjhtml='".addslashes($cjhtml)."',myorder=$add[myorder],ftype='$add[ftype]',flen='$add[flen]',fvalue='".addslashes($add[fvalue])."',iskey=$add[iskey],tobr=$add[tobr],dohtml=$add[dohtml],qfhtml='".addslashes($qfhtml)."',isonly='$add[isonly]',linkfieldval='$add[linkfieldval]',samedata='$add[samedata]',fformsize='$add[fformsize]',ispage='$add[ispage]',adddofun='$add[adddofun]',editdofun='$add[editdofun]',qadddofun='$add[qadddofun]',qeditdofun='$add[qeditdofun]',linkfieldtb='$add[linkfieldtb]',linkfieldshow='$add[linkfieldshow]',editorys='$add[editorys]',issmalltext='$add[issmalltext]' where fid='$add[fid]'");
  970. TogSaveTxtF(1);//公共变量
  971. if($add[savetxt]==1&&$add[iscj]==1)
  972. {
  973. $tmpsql=$empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." change ".$add[f]." ".$add[f]." mediumtext not null;");
  974. }
  975. //更新表单
  976. $record="<!--record-->";
  977. $field="<!--field--->";
  978. $like=$field.$add[oldf].$record;
  979. $newlike=$field.$add[f].$record;
  980. $slike=",".$add[oldf].",";
  981. $newslike=",".$add[f].",";
  982. $fsql=$empire->query("select mid,mtemp,cj,enter,tempvar,searchvar,tid,qenter,mustqenterf,qmtemp,listandf,listtempvar,canaddf,caneditf,orderf from {$dbtbpre}enewsmod where tid='$tid'");
  983. while($fr=$empire->fetch($fsql))
  984. {
  985. $and="";
  986. $enter=$fr['enter'];
  987. if($add[f]<>$add[oldf])
  988. {
  989. //采集项
  990. if(strstr($fr[cj],$like))
  991. {
  992. $cj=str_replace($like,$newlike,$fr[cj]);
  993. $and=",cj='$cj'";
  994. ChangeMCj($fr[mid],$fr[tid],$cj);
  995. }
  996. //录入项
  997. if(strstr($fr[enter],$like))
  998. {
  999. $enter=str_replace($like,$newlike,$fr[enter]);
  1000. $and.=",enter='$enter'";
  1001. }
  1002. //投稿项
  1003. if(strstr($fr[qenter],$like))
  1004. {
  1005. $qenter=str_replace($like,$newlike,$fr[qenter]);
  1006. $and.=",qenter='$qenter'";
  1007. }
  1008. //内容模板项
  1009. if(strstr($fr[tempvar],$like))
  1010. {
  1011. $tempvar=str_replace($like,$newlike,$fr[tempvar]);
  1012. $and.=",tempvar='$tempvar'";
  1013. }
  1014. //列表模板项
  1015. if(strstr($fr[listtempvar],$like))
  1016. {
  1017. $listtempvar=str_replace($like,$newlike,$fr[listtempvar]);
  1018. $and.=",listtempvar='$listtempvar'";
  1019. }
  1020. //搜索项
  1021. if(strstr($fr[searchvar],$slike))
  1022. {
  1023. $searchvar=str_replace($slike,$newslike,$fr[searchvar]);
  1024. $and.=",searchvar='$searchvar'";
  1025. }
  1026. //必填项
  1027. if(strstr($fr[mustqenterf],$slike))
  1028. {
  1029. $mustqenterf=str_replace($slike,$newslike,$fr[mustqenterf]);
  1030. $and.=",mustqenterf='$mustqenterf'";
  1031. }
  1032. //结合项
  1033. if(strstr($fr[listandf],$slike))
  1034. {
  1035. $listandf=str_replace($slike,$newslike,$fr[listandf]);
  1036. $and.=",listandf='$listandf'";
  1037. }
  1038. //排序项
  1039. if(strstr($fr[orderf],$slike))
  1040. {
  1041. $orderf=str_replace($slike,$newslike,$fr[orderf]);
  1042. $and.=",orderf='$orderf'";
  1043. }
  1044. //可修改
  1045. if(strstr($fr[caneditf],$slike))
  1046. {
  1047. $caneditf=str_replace($slike,$newslike,$fr[caneditf]);
  1048. $and.=",caneditf='$caneditf'";
  1049. }
  1050. //可增加
  1051. if(strstr($fr[canaddf],$slike))
  1052. {
  1053. $canaddf=str_replace($slike,$newslike,$fr[canaddf]);
  1054. $and.=",canaddf='$canaddf'";
  1055. }
  1056. //表单模板
  1057. if(strstr($fr[mtemp],'[!--'.$add[oldf].'--]'))
  1058. {
  1059. $fr[mtemp]=str_replace('[!--'.$add[oldf].'--]','[!--'.$add[f].'--]',$fr[mtemp]);
  1060. $and.=",mtemp='".addslashes(stripSlashes($fr[mtemp]))."'";
  1061. }
  1062. //投稿表单模板
  1063. if(strstr($fr[qmtemp],'[!--'.$add[oldf].'--]'))
  1064. {
  1065. $fr[qmtemp]=str_replace('[!--'.$add[oldf].'--]','[!--'.$add[f].'--]',$fr[qmtemp]);
  1066. $and.=",qmtemp='".addslashes(stripSlashes($fr[qmtemp]))."'";
  1067. }
  1068. if($and)
  1069. {
  1070. $empire->query("update {$dbtbpre}enewsmod set mid='$fr[mid]'".$and." where mid='$fr[mid]'");
  1071. }
  1072. }
  1073. ChangeMForm($fr[mid],$fr[tid],$fr[mtemp]);
  1074. ChangeQmForm($fr[mid],$fr[tid],$fr[qmtemp]);
  1075. }
  1076. GetConfig(1);//更新缓存
  1077. if($sql)
  1078. {
  1079. insert_dolog("fid=".$add[fid]."<br>f=".$add[f]);//操作日志
  1080. printerror("EditFSuccess","db/ListF.php?tid=$tid&tbname=$tbname");
  1081. }
  1082. else
  1083. {printerror("DbError","history.go(-1)");}
  1084. }
  1085. //修改数据表系统字段
  1086. function EditSysF($add,$userid,$username){
  1087. global $empire,$dbtbpre;
  1088. $tid=(int)$add['tid'];
  1089. $tbname=RepPostVar($add['tbname']);
  1090. $fid=(int)$add['fid'];
  1091. $f=RepPostVar($add['f']);
  1092. if(!$fid||!$tid||!$tbname||!$f||!$add[fname])
  1093. {
  1094. printerror("EmptyF","history.go(-1)");
  1095. }
  1096. CheckLevel($userid,$username,$classid,"f");//验证权限
  1097. //字段
  1098. $addupdate='';
  1099. if($f=='title'||$f=='titlepic')
  1100. {
  1101. if(!empty($add['flen']))
  1102. {
  1103. $field=$f." ".$add['ftype']."(".$add['flen'].") NOT NULL default ''";
  1104. //信息表
  1105. $empire->query("alter table {$dbtbpre}ecms_".$tbname." change ".$f." ".$field);
  1106. //归档表
  1107. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc change ".$f." ".$field);
  1108. //采集临时表
  1109. $empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." change ".$f." ".$field);
  1110. }
  1111. $addupdate=",ftype='$add[ftype]'";
  1112. }
  1113. //索引
  1114. $iskey=(int)$add['iskey'];
  1115. if($f=='title'||$f=='titlepic'||$f=='newstime')
  1116. {
  1117. if($iskey==1)//索引
  1118. {
  1119. if($add['oldiskey']==0)
  1120. {
  1121. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." ADD INDEX(".$f.")");
  1122. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc ADD INDEX(".$f.")");
  1123. }
  1124. }
  1125. elseif($add['oldiskey']==1&&$iskey==0)//删除索引
  1126. {
  1127. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." DROP INDEX ".$f);
  1128. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc DROP INDEX ".$f);
  1129. }
  1130. }
  1131. //处理变量
  1132. $add[isonly]=(int)$add[isonly];
  1133. $add[myorder]=(int)$add[myorder];
  1134. //替换代码
  1135. if($add[fform]<>$add[oldfform]||$add[fvalue]<>$add[oldfvalue]||$add[oldlinkfieldtb]<>$add[linkfieldtb]||$add[oldlinkfieldshow]<>$add[linkfieldshow]||$add[linkfieldval]<>$add[oldlinkfieldval]||$add[fformsize]<>$add[oldfformsize])
  1136. {
  1137. $fhtml=GetFform($add[fform],$add[f],$add[fvalue],$add[linkfieldval],$add[fformsize],$add);
  1138. }
  1139. else
  1140. {
  1141. $fhtml=AddAddsData($add[fhtml]);
  1142. }
  1143. if($add[fform]<>$add[oldfform]||$add[fvalue]<>$add[oldfvalue]||$add[oldlinkfieldtb]<>$add[linkfieldtb]||$add[oldlinkfieldshow]<>$add[linkfieldshow]||$add[linkfieldval]<>$add[oldlinkfieldval]||$add[fformsize]<>$add[oldfformsize])
  1144. {
  1145. $qfhtml=GetQFform($add[fform],$add[f],$add[fvalue],$add[fformsize],$add);
  1146. }
  1147. else
  1148. {
  1149. $qfhtml=AddAddsData($add[qfhtml]);
  1150. }
  1151. $sql=$empire->query("update {$dbtbpre}enewsf set fname='$add[fname]',fform='$add[fform]',fhtml='".addslashes($fhtml)."',fzs='".addslashes($add[fzs])."',myorder=$add[myorder],flen='$add[flen]',fvalue='".addslashes($add[fvalue])."',iskey=$iskey,qfhtml='".addslashes($qfhtml)."',isonly='$add[isonly]',linkfieldval='$add[linkfieldval]',samedata='$add[samedata]',fformsize='$add[fformsize]',adddofun='$add[adddofun]',editdofun='$add[editdofun]',qadddofun='$add[qadddofun]',qeditdofun='$add[qeditdofun]',linkfieldtb='$add[linkfieldtb]',linkfieldshow='$add[linkfieldshow]'".$addupdate." where fid='$fid'");
  1152. TogSaveTxtF(1);//公共变量
  1153. //更新表单
  1154. $fsql=$empire->query("select mid,mtemp,tid,qmtemp from {$dbtbpre}enewsmod where tid='$tid'");
  1155. while($fr=$empire->fetch($fsql))
  1156. {
  1157. ChangeMForm($fr[mid],$fr[tid],$fr[mtemp]);
  1158. ChangeQmForm($fr[mid],$fr[tid],$fr[qmtemp]);
  1159. }
  1160. GetConfig(1);//更新缓存
  1161. if($sql)
  1162. {
  1163. insert_dolog("fid=".$fid."<br>f=".$f);//操作日志
  1164. printerror("EditFSuccess","db/EditSysF.php?tid=$tid&tbname=$tbname&fid=$fid");
  1165. }
  1166. else
  1167. {
  1168. printerror("DbError","history.go(-1)");
  1169. }
  1170. }
  1171. //删除数据库字段
  1172. function DelF($fid,$tid,$tbname,$userid,$username){
  1173. global $empire,$dbtbpre;
  1174. $tid=(int)$tid;
  1175. $tbname=RepPostVar($tbname);
  1176. $fid=(int)$fid;
  1177. if(empty($fid)||!$tid||!$tbname)
  1178. {
  1179. printerror("EmptyFid","history.go(-1)");
  1180. }
  1181. CheckLevel($userid,$username,$classid,"f");//验证权限
  1182. //是否系统内部字段
  1183. $cr=$empire->fetch1("select isadd,f,tbdataf,iscj from {$dbtbpre}enewsf where fid='$fid'");
  1184. if(empty($cr[isadd]))
  1185. {
  1186. printerror("NotIsAdd","history.go(-1)");
  1187. }
  1188. //删除表字段
  1189. if($cr['tbdataf']==1)
  1190. {
  1191. $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tid='$tid'");
  1192. if($tbr['datatbs'])
  1193. {
  1194. $dtbr=explode(',',$tbr['datatbs']);
  1195. $count=count($dtbr);
  1196. for($i=1;$i<$count-1;$i++)
  1197. {
  1198. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." drop COLUMN ".$cr[f]);
  1199. }
  1200. }
  1201. //归档副表
  1202. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc_data drop COLUMN ".$cr[f]);
  1203. }
  1204. else
  1205. {
  1206. $usql=$empire->query("alter table {$dbtbpre}ecms_".$tbname." drop COLUMN ".$cr[f]);
  1207. $usql=$empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc drop COLUMN ".$cr[f]);
  1208. }
  1209. //采集表字段
  1210. if($cr[iscj]==1)
  1211. {
  1212. $usql=$empire->query("alter table {$dbtbpre}ecms_infotmp_".$tbname." drop COLUMN ".$cr[f]);
  1213. $usql=$empire->query("alter table {$dbtbpre}ecms_infoclass_".$tbname." drop COLUMN zz_".$cr[f].",drop COLUMN z_".$cr[f].",drop COLUMN qz_".$cr[f].",drop COLUMN save_".$cr[f]);
  1214. }
  1215. $sql=$empire->query("delete from {$dbtbpre}enewsf where fid='$fid'");
  1216. TogSaveTxtF(1);//公共变量
  1217. //删除模型中字段项
  1218. $record="<!--record-->";
  1219. $field="<!--field--->";
  1220. $like=$field.$cr[f].$record;
  1221. $slike=",".$cr[f].",";
  1222. $dsql=$empire->query("select mid,cj,enter,tempvar,searchvar,tid,qenter,mustqenterf,listandf,listtempvar,canaddf,caneditf,orderf from {$dbtbpre}enewsmod where tid='$tid' and (cj like '%".$like."%' or enter like '%".$like."%' or searchvar like '%".$slike."%' or tempvar like '%".$like."%' or listtempvar like '%".$like."%' or qenter like '%".$like."%' or mustqenterf like '%".$slike."%' or listandf like '%".$slike."%' or canaddf like '%".$slike."%' or caneditf like '%".$slike."%' or orderf like '%".$slike."%')");
  1223. while($r=$empire->fetch($dsql))
  1224. {
  1225. $cj="";
  1226. $enter="";
  1227. $tempvar="";
  1228. $listtempvar="";
  1229. $searchvar="";
  1230. $qenter="";
  1231. $mustqenterf="";
  1232. $listandf="";
  1233. $orderf="";
  1234. $canaddf="";
  1235. $caneditf="";
  1236. $re="";
  1237. $re1="";
  1238. $and="";
  1239. $dh="";
  1240. //采集
  1241. if(strstr($r[cj],$like))
  1242. {
  1243. $re=explode($record,$r[cj]);
  1244. for($i=0;$i<count($re)-1;$i++)
  1245. {
  1246. if(strstr($re[$i].$record,$like))
  1247. {continue;}
  1248. $cj.=$re[$i].$record;
  1249. }
  1250. //更新采集表单
  1251. ChangeMCj($r[mid],$r[tid],$cj);
  1252. $and="cj='$cj'";
  1253. }
  1254. $dh="";
  1255. //录入表单
  1256. if(strstr($r[enter],$like))
  1257. {
  1258. $re1=explode($record,$r[enter]);
  1259. for($i=0;$i<count($re1)-1;$i++)
  1260. {
  1261. if(strstr($re1[$i].$record,$like))
  1262. {continue;}
  1263. $enter.=$re1[$i].$record;
  1264. }
  1265. if(!empty($and))
  1266. {$dh=",";}
  1267. $and.=$dh."enter='$enter'";
  1268. }
  1269. $dh="";
  1270. //投稿表单
  1271. if(strstr($r[qenter],$like))
  1272. {
  1273. $re1=explode($record,$r[qenter]);
  1274. for($i=0;$i<count($re1)-1;$i++)
  1275. {
  1276. if(strstr($re1[$i].$record,$like))
  1277. {continue;}
  1278. $qenter.=$re1[$i].$record;
  1279. }
  1280. if(!empty($and))
  1281. {$dh=",";}
  1282. $and.=$dh."qenter='$qenter'";
  1283. }
  1284. $dh="";
  1285. //内容模板变量
  1286. if(strstr($r[tempvar],$like))
  1287. {
  1288. $re1=explode($record,$r[tempvar]);
  1289. for($i=0;$i<count($re1)-1;$i++)
  1290. {
  1291. if(strstr($re1[$i].$record,$like))
  1292. {continue;}
  1293. $tempvar.=$re1[$i].$record;
  1294. }
  1295. if(!empty($and))
  1296. {$dh=",";}
  1297. $and.=$dh."tempvar='$tempvar'";
  1298. }
  1299. $dh="";
  1300. //列表模板变量
  1301. if(strstr($r[listtempvar],$like))
  1302. {
  1303. $re1=explode($record,$r[listtempvar]);
  1304. for($i=0;$i<count($re1)-1;$i++)
  1305. {
  1306. if(strstr($re1[$i].$record,$like))
  1307. {continue;}
  1308. $listtempvar.=$re1[$i].$record;
  1309. }
  1310. if(!empty($and))
  1311. {$dh=",";}
  1312. $and.=$dh."listtempvar='$listtempvar'";
  1313. }
  1314. $dh="";
  1315. //搜索变量
  1316. if(strstr($r[searchvar],$slike))
  1317. {
  1318. if(!empty($and))
  1319. {$dh=",";}
  1320. $searchvar=str_replace($slike,",",$r[searchvar]);
  1321. $and.=$dh."searchvar='$searchvar'";
  1322. }
  1323. //必填项
  1324. $dh="";
  1325. if(strstr($r[mustqenterf],$slike))
  1326. {
  1327. if(!empty($and))
  1328. {$dh=",";}
  1329. $mustqenterf=str_replace($slike,",",$r[mustqenterf]);
  1330. $and.=$dh."mustqenterf='$mustqenterf'";
  1331. }
  1332. //可增可修改项
  1333. $dh="";
  1334. if(strstr($r[canaddf],$slike))
  1335. {
  1336. if(!empty($and))
  1337. {$dh=",";}
  1338. $canaddf=str_replace($slike,",",$r[canaddf]);
  1339. $and.=$dh."canaddf='$canaddf'";
  1340. }
  1341. $dh="";
  1342. if(strstr($r[caneditf],$slike))
  1343. {
  1344. if(!empty($and))
  1345. {$dh=",";}
  1346. $caneditf=str_replace($slike,",",$r[caneditf]);
  1347. $and.=$dh."caneditf='$caneditf'";
  1348. }
  1349. //结合项
  1350. $dh="";
  1351. if(strstr($r[listandf],$slike))
  1352. {
  1353. if(!empty($and))
  1354. {$dh=",";}
  1355. $listandf=str_replace($slike,",",$r[listandf]);
  1356. $and.=$dh."listandf='$listandf'";
  1357. }
  1358. //排序项
  1359. $dh="";
  1360. if(strstr($r[orderf],$slike))
  1361. {
  1362. if(!empty($and))
  1363. {$dh=",";}
  1364. $orderf=str_replace($slike,",",$r[orderf]);
  1365. $and.=$dh."orderf='$orderf'";
  1366. }
  1367. if($and)
  1368. {
  1369. $empire->query("update {$dbtbpre}enewsmod set ".$and." where mid='$r[mid]'");
  1370. }
  1371. }
  1372. GetConfig(1);//更新缓存
  1373. if($sql)
  1374. {
  1375. //操作日志
  1376. insert_dolog("fid=".$fid."<br>f=".$cr[f]);
  1377. printerror("DelFSuccess","db/ListF.php?tid=$tid&tbname=$tbname");
  1378. }
  1379. else
  1380. {printerror("DbError","history.go(-1)");}
  1381. }
  1382. //修改字段顺序
  1383. function EditFOrder($fid,$myorder,$tid,$tbname,$userid,$username){
  1384. global $empire,$dbtbpre;
  1385. $tid=(int)$tid;
  1386. $tbname=RepPostVar($tbname);
  1387. //验证权限
  1388. CheckLevel($userid,$username,$classid,"f");
  1389. for($i=0;$i<count($myorder);$i++)
  1390. {
  1391. $newmyorder=(int)$myorder[$i];
  1392. $usql=$empire->query("update {$dbtbpre}enewsf set myorder=$newmyorder where fid='$fid[$i]'");
  1393. }
  1394. printerror("EditFOrderSuccess","db/ListF.php?tid=$tid&tbname=$tbname");
  1395. }
  1396. //转移字段
  1397. function ChangeDataTableF($add,$userid,$username){
  1398. global $empire,$dbtbpre,$public_r,$fun_r;
  1399. //验证权限
  1400. CheckLevel($userid,$username,$classid,"f");
  1401. $fid=(int)$add[fid];
  1402. $tid=(int)$add[tid];
  1403. $tbname=RepPostVar($add[tbname]);
  1404. $line=(int)$add[line];
  1405. $start=(int)$add[start];
  1406. if(!$fid||!$tid||!$tbname)
  1407. {
  1408. printerror("ErrorUrl","history.go(-1)");
  1409. }
  1410. if(empty($line))
  1411. {
  1412. $line=200;
  1413. }
  1414. $fr=$empire->fetch1("select * from {$dbtbpre}enewsf where fid='$fid'");
  1415. if(!$fr[fid])
  1416. {
  1417. printerror("ErrorUrl","history.go(-1)");
  1418. }
  1419. if(empty($fr[isadd]))
  1420. {
  1421. printerror("NotIsAdd","history.go(-1)");
  1422. }
  1423. $tid=$fr[tid];
  1424. $tbname=$fr[tbname];
  1425. $f=$fr[f];
  1426. //建字段
  1427. if(empty($start))
  1428. {
  1429. $field=ReturnTbFtype($fr);//返回字段
  1430. if($fr[tbdataf])//转移到主表
  1431. {
  1432. $empire->query("alter table {$dbtbpre}ecms_".$tbname." add ".$field);
  1433. if($fr[iskey]==1)//索引
  1434. {
  1435. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname." ADD INDEX(".$fr[f].")");
  1436. }
  1437. //归档主表
  1438. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc add ".$field);
  1439. if($fr[iskey]==1)//索引
  1440. {
  1441. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc ADD INDEX(".$fr[f].")");
  1442. }
  1443. }
  1444. else//转移到副表
  1445. {
  1446. $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tid='$tid'");
  1447. if($tbr['datatbs'])
  1448. {
  1449. $dtbr=explode(',',$tbr['datatbs']);
  1450. $count=count($dtbr);
  1451. for($i=1;$i<$count-1;$i++)
  1452. {
  1453. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." add ".$field);
  1454. if($fr[iskey]==1)//索引
  1455. {
  1456. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." ADD INDEX(".$fr[f].")");
  1457. }
  1458. }
  1459. }
  1460. //归档副表
  1461. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc_data add ".$field);
  1462. if($fr[iskey]==1)//索引
  1463. {
  1464. $empire->query("ALTER TABLE {$dbtbpre}ecms_".$tbname."_doc_data ADD INDEX(".$fr[f].")");
  1465. }
  1466. }
  1467. }
  1468. $selectf='';
  1469. if(empty($fr[tbdataf]))
  1470. {
  1471. $selectf=','.$fr[f];
  1472. }
  1473. $b=0;
  1474. $sql=$empire->query("select id,stb".$selectf." from {$dbtbpre}ecms_".$tbname." where id>$start order by id limit ".$line);
  1475. while($r=$empire->fetch($sql))
  1476. {
  1477. $b=1;
  1478. $newstart=$r['id'];
  1479. if($fr[tbdataf])//副表
  1480. {
  1481. $finfor=$empire->fetch1("select ".$f." from {$dbtbpre}ecms_".$tbname."_data_".$r[stb]." where id='$r[id]'");
  1482. $value=$finfor[$f];
  1483. $empire->query("update {$dbtbpre}ecms_".$tbname." set ".$f."='".StripAddsData($value)."' where id='$r[id]'");
  1484. }
  1485. else//主表
  1486. {
  1487. $value=$r[$f];
  1488. $empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$r[stb]." set ".$f."='".StripAddsData($value)."' where id='$r[id]'");
  1489. }
  1490. }
  1491. if(empty($b))
  1492. {
  1493. echo"<link rel=\"stylesheet\" href=\"../data/images/css.css\" type=\"text/css\"><meta http-equiv=\"refresh\" content=\"".$public_r['realltime'].";url=ecmsmod.php?enews=ChangeDocDataTableF&tid=$tid&tbname=$tbname&fid=$fid&line=$line\">".$fun_r[AllChangeDataTableFSuccess];
  1494. exit();
  1495. }
  1496. echo"<link rel=\"stylesheet\" href=\"../data/images/css.css\" type=\"text/css\"><meta http-equiv=\"refresh\" content=\"".$public_r['realltime'].";url=ecmsmod.php?enews=ChangeDataTableF&tid=$tid&tbname=$tbname&fid=$fid&line=$line&start=$newstart\">".$fun_r[OneChangeDataTableFSuccess]."(ID:<font color=red><b>".$newstart."</b></font>)";
  1497. exit();
  1498. }
  1499. //转移字段(归档)
  1500. function ChangeDocDataTableF($add,$userid,$username){
  1501. global $empire,$dbtbpre,$public_r,$fun_r;
  1502. //验证权限
  1503. CheckLevel($userid,$username,$classid,"f");
  1504. $fid=(int)$add[fid];
  1505. $tid=(int)$add[tid];
  1506. $tbname=RepPostVar($add[tbname]);
  1507. $line=(int)$add[line];
  1508. $start=(int)$add[start];
  1509. if(!$fid||!$tid||!$tbname)
  1510. {
  1511. printerror("ErrorUrl","history.go(-1)");
  1512. }
  1513. if(empty($line))
  1514. {
  1515. $line=200;
  1516. }
  1517. $fr=$empire->fetch1("select * from {$dbtbpre}enewsf where fid='$fid'");
  1518. if(!$fr[fid])
  1519. {
  1520. printerror("ErrorUrl","history.go(-1)");
  1521. }
  1522. if(empty($fr[isadd]))
  1523. {
  1524. printerror("NotIsAdd","history.go(-1)");
  1525. }
  1526. $tid=$fr[tid];
  1527. $tbname=$fr[tbname];
  1528. $f=$fr[f];
  1529. $selectf='';
  1530. if(empty($fr[tbdataf]))
  1531. {
  1532. $selectf=','.$fr[f];
  1533. }
  1534. $b=0;
  1535. $sql=$empire->query("select id,stb".$selectf." from {$dbtbpre}ecms_".$tbname."_doc where id>$start order by id limit ".$line);
  1536. while($r=$empire->fetch($sql))
  1537. {
  1538. $b=1;
  1539. $newstart=$r['id'];
  1540. if($fr[tbdataf])//副表
  1541. {
  1542. $finfor=$empire->fetch1("select ".$f." from {$dbtbpre}ecms_".$tbname."_doc_data where id='$r[id]'");
  1543. $value=$finfor[$f];
  1544. $empire->query("update {$dbtbpre}ecms_".$tbname."_doc set ".$f."='".StripAddsData($value)."' where id='$r[id]'");
  1545. }
  1546. else//主表
  1547. {
  1548. $value=$r[$f];
  1549. $empire->query("update {$dbtbpre}ecms_".$tbname."_doc_data set ".$f."='".StripAddsData($value)."' where id='$r[id]'");
  1550. }
  1551. }
  1552. if(empty($b))
  1553. {
  1554. //删除字段
  1555. if($fr[tbdataf])//转移到主表
  1556. {
  1557. $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tid='$tid'");
  1558. if($tbr['datatbs'])
  1559. {
  1560. $dtbr=explode(',',$tbr['datatbs']);
  1561. $count=count($dtbr);
  1562. for($i=1;$i<$count-1;$i++)
  1563. {
  1564. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." drop COLUMN ".$fr[f]);
  1565. }
  1566. }
  1567. //归档副表
  1568. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc_data drop COLUMN ".$fr[f]);
  1569. }
  1570. else//转移到副表
  1571. {
  1572. $empire->query("alter table {$dbtbpre}ecms_".$tbname." drop COLUMN ".$fr[f]);
  1573. $empire->query("alter table {$dbtbpre}ecms_".$tbname."_doc drop COLUMN ".$fr[f]);
  1574. }
  1575. $newtbdataf=$fr[tbdataf]?0:1;
  1576. $empire->query("update {$dbtbpre}enewsf set tbdataf='$newtbdataf' where fid='$fid'");
  1577. //删除模型中字段项
  1578. if(empty($tbr['datatbs']))
  1579. {
  1580. $record="<!--record-->";
  1581. $field="<!--field--->";
  1582. $like=$field.$fr[f].$record;
  1583. $slike=",".$fr[f].",";
  1584. $dsql=$empire->query("select mid,searchvar,listandf,listtempvar,orderf from {$dbtbpre}enewsmod where tid='$tid' and (searchvar like '%".$slike."%' or listtempvar like '%".$like."%' or listandf like '%".$slike."%' or orderf like '%".$slike."%')");
  1585. while($r=$empire->fetch($dsql))
  1586. {
  1587. $listtempvar="";
  1588. $searchvar="";
  1589. $listandf="";
  1590. $orderf="";
  1591. $re="";
  1592. $re1="";
  1593. $and="";
  1594. $dh="";
  1595. //列表模板变量
  1596. if(strstr($r[listtempvar],$like))
  1597. {
  1598. $re1=explode($record,$r[listtempvar]);
  1599. for($i=0;$i<count($re1)-1;$i++)
  1600. {
  1601. if(strstr($re1[$i].$record,$like))
  1602. {continue;}
  1603. $listtempvar.=$re1[$i].$record;
  1604. }
  1605. $and.=$dh."listtempvar='$listtempvar'";
  1606. }
  1607. $dh="";
  1608. //搜索变量
  1609. if(strstr($r[searchvar],$slike))
  1610. {
  1611. if(!empty($and))
  1612. {$dh=",";}
  1613. $searchvar=str_replace($slike,",",$r[searchvar]);
  1614. $and.=$dh."searchvar='$searchvar'";
  1615. }
  1616. //结合项
  1617. $dh="";
  1618. if(strstr($r[listandf],$slike))
  1619. {
  1620. if(!empty($and))
  1621. {$dh=",";}
  1622. $listandf=str_replace($slike,",",$r[listandf]);
  1623. $and.=$dh."listandf='$listandf'";
  1624. }
  1625. //排序项
  1626. $dh="";
  1627. if(strstr($r[orderf],$slike))
  1628. {
  1629. if(!empty($and))
  1630. {$dh=",";}
  1631. $orderf=str_replace($slike,",",$r[orderf]);
  1632. $and.=$dh."orderf='$orderf'";
  1633. }
  1634. if($and)
  1635. {
  1636. $empire->query("update {$dbtbpre}enewsmod set ".$and." where mid='$r[mid]'");
  1637. }
  1638. }
  1639. }
  1640. GetConfig(1);//更新缓存
  1641. insert_dolog("tid=$tid&tbname=$tbname<br>fid=$fid&field=$f&tbdataf=".$newtbdataf);//操作日志
  1642. printerror("ChangeDataTableFSuccess","db/ListF.php?tid=$tid&tbname=$tbname");
  1643. }
  1644. echo"<link rel=\"stylesheet\" href=\"../data/images/css.css\" type=\"text/css\"><meta http-equiv=\"refresh\" content=\"".$public_r['realltime'].";url=ecmsmod.php?enews=ChangeDocDataTableF&tid=$tid&tbname=$tbname&fid=$fid&line=$line&start=$newstart\">".$fun_r[OneChangeDocDataTableFSuccess]."(ID:<font color=red><b>".$newstart."</b></font>)";
  1645. exit();
  1646. }
  1647. //************************** 模型 **************************
  1648. //更新默认系统模型
  1649. function UpdateTbDefMod($tid,$tbname,$mid){
  1650. global $empire,$dbtbpre;
  1651. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewsmod where tid='$tid'");
  1652. if($num==1)
  1653. {
  1654. $empire->query("update {$dbtbpre}enewstable set mid='$mid' where tid='$tid'");
  1655. $empire->query("update {$dbtbpre}enewsmod set isdefault=1 where mid='$mid'");
  1656. }
  1657. }
  1658. //更新模型表单
  1659. function ChangeMForm($mid,$tid,$mtemp){
  1660. global $empire,$dbtbpre;
  1661. $file="../data/html/".$mid.".php";
  1662. $sql=$empire->query("select f,fhtml from {$dbtbpre}enewsf where tid='$tid'");
  1663. while($r=$empire->fetch($sql))
  1664. {
  1665. $mtemp=str_replace("[!--".$r[f]."--]",$r[fhtml],$mtemp);
  1666. }
  1667. $mtemp=AddCheckViewTempCode().$mtemp;
  1668. WriteFiletext($file,$mtemp);
  1669. }
  1670. //更新投稿表单
  1671. function ChangeQmForm($mid,$tid,$mtemp){
  1672. global $empire,$dbtbpre;
  1673. $file="../data/html/q".$mid.".php";
  1674. $sql=$empire->query("select f,qfhtml from {$dbtbpre}enewsf where tid='$tid'");
  1675. while($r=$empire->fetch($sql))
  1676. {
  1677. $mtemp=str_replace("[!--".$r[f]."--]",$r[qfhtml],$mtemp);
  1678. }
  1679. $mtemp=AddCheckViewTempCode().$mtemp;
  1680. WriteFiletext($file,$mtemp);
  1681. }
  1682. //更新采集
  1683. function ChangeMCj($mid,$tid,$cj){
  1684. global $empire,$dbtbpre;
  1685. $record="<!--record-->";
  1686. $field="<!--field--->";
  1687. //读取修改采集表单
  1688. $data="<tr><td bgcolor=ffffff>[!--enews.name--]</td><td bgcolor=ffffff>[!--enews.var--]</td></tr>";
  1689. $file1="../data/html/editcj".$mid.".php";
  1690. $file="../data/html/cj".$mid.".php";
  1691. $r=explode($record,$cj);
  1692. for($i=0;$i<count($r)-1;$i++)
  1693. {
  1694. $r1=explode($field,$r[$i]);
  1695. $fr=$empire->fetch1("select cjhtml,fhtml from {$dbtbpre}enewsf where f='$r1[1]' and tid='$tid' limit 1");
  1696. $cjtemp=str_replace("[!--enews.name--]",$r1[0],$fr[cjhtml]);
  1697. $str.=$cjtemp;
  1698. $editcjtemp=str_replace("[!--enews.name--]",$r1[0],$data);
  1699. $editcjtemp=str_replace("[!--enews.var--]",$fr[fhtml],$editcjtemp);
  1700. $editcj.=$editcjtemp;
  1701. }
  1702. WriteFiletext($file,AddCheckViewTempCode().$str);
  1703. WriteFiletext($file1,AddCheckViewTempCode().$editcj);
  1704. }
  1705. //组合采集项
  1706. function TogMCj($cname,$cchange){
  1707. $record="<!--record-->";
  1708. $field="<!--field--->";
  1709. $c="";
  1710. for($i=0;$i<count($cchange);$i++)
  1711. {
  1712. $v=$cchange[$i];
  1713. $name=str_replace($field,"",$cname[$v]);
  1714. $name=str_replace($record,"",$name);
  1715. $c.=$name.$field.$v.$record;
  1716. }
  1717. return $c;
  1718. }
  1719. //组合投稿项
  1720. function TogMqenter($cname,$cqenter){
  1721. $record="<!--record-->";
  1722. $field="<!--field--->";
  1723. $c="";
  1724. for($i=0;$i<count($cqenter);$i++)
  1725. {
  1726. $v=$cqenter[$i];
  1727. $name=str_replace($field,"",$cname[$v]);
  1728. $name=str_replace($record,"",$name);
  1729. $c.=$name.$field.$v.$record;
  1730. }
  1731. return $c;
  1732. }
  1733. //组合搜索项
  1734. function TogMSearch($cname,$schange){
  1735. $c="";
  1736. for($i=0;$i<count($schange);$i++)
  1737. {
  1738. $v=$schange[$i];
  1739. $c.=$v.",";
  1740. }
  1741. if($c)
  1742. {
  1743. $c=",".$c;
  1744. }
  1745. return $c;
  1746. }
  1747. //组合必填项
  1748. function TogMustf($cname,$menter){
  1749. $c="";
  1750. for($i=0;$i<count($menter);$i++)
  1751. {
  1752. $v=$menter[$i];
  1753. $c.=$v.",";
  1754. }
  1755. if($c)
  1756. {
  1757. $c=",".$c;
  1758. }
  1759. return $c;
  1760. }
  1761. //组合录入项
  1762. function TogMEnter($cname,$center,$ltempf,$ptempf,$tid){
  1763. global $empire;
  1764. $f=1;
  1765. $record="<!--record-->";
  1766. $field="<!--field--->";
  1767. $c="";
  1768. $lt="";
  1769. $pt="";
  1770. for($i=0;$i<count($center);$i++)
  1771. {
  1772. $v=$center[$i];
  1773. $name=str_replace($field,"",$cname[$v]);
  1774. $name=str_replace($record,"",$name);
  1775. $c.=$name.$field.$v.$record;
  1776. }
  1777. for($i=0;$i<count($ltempf);$i++)
  1778. {
  1779. $v=$ltempf[$i];
  1780. $name=str_replace($field,"",$cname[$v]);
  1781. $name=str_replace($record,"",$name);
  1782. $lt.=$name.$field.$v.$record;
  1783. }
  1784. for($i=0;$i<count($ptempf);$i++)
  1785. {
  1786. $v=$ptempf[$i];
  1787. $name=str_replace($field,"",$cname[$v]);
  1788. $name=str_replace($record,"",$name);
  1789. $pt.=$name.$field.$v.$record;
  1790. }
  1791. $r[0]=$c;
  1792. $r[1]=$lt;
  1793. $r[2]=$pt;
  1794. return $r;
  1795. }
  1796. //返回自动生成录入表单模板
  1797. function ReturnMtemp($cname,$center){
  1798. $temp="<tr><td width='16%' height=25 bgcolor='ffffff'>enews.name</td><td bgcolor='ffffff'>[!--enews.var--]</td></tr>";
  1799. $ntemp="<tr><td height=25 colspan=2 bgcolor='ffffff'><div align=left>enews.name</div></td></tr></table><div style='background-color:#D0D0D0'>[!--enews.var--]</div><table width='100%' align=center cellpadding=3 cellspacing=1 bgcolor='#DBEAF5'>";
  1800. for($i=0;$i<count($center);$i++)
  1801. {
  1802. $v=$center[$i];
  1803. if($v=="newstext")
  1804. {
  1805. $data.=str_replace("enews.var",$v,str_replace("enews.name",$cname[$v],$ntemp));
  1806. continue;
  1807. }
  1808. $data.=str_replace("enews.var",$v,str_replace("enews.name",$cname[$v],$temp));
  1809. }
  1810. return "<table width='100%' align=center cellpadding=3 cellspacing=1 bgcolor='#DBEAF5'>".$data."</table>";
  1811. }
  1812. //返回自动生成投稿表单模板
  1813. function ReturnQmtemp($cname,$cqenter){
  1814. $temp="<tr><td width='16%' height=25 bgcolor='ffffff'>enews.name</td><td bgcolor='ffffff'>[!--enews.var--]</td></tr>";
  1815. $ntemp="<tr><td height=25 colspan=2 bgcolor='ffffff'><div align=left>enews.name</div></td></tr></table><div style='background-color:#D0D0D0'>[!--enews.var--]</div><table width='100%' align=center cellpadding=3 cellspacing=1 bgcolor='#DBEAF5'>";
  1816. for($i=0;$i<count($cqenter);$i++)
  1817. {
  1818. $v=$cqenter[$i];
  1819. if($v=="newstext")
  1820. {
  1821. $data.=str_replace("enews.var",$v,str_replace("enews.name",$cname[$v],$ntemp));
  1822. continue;
  1823. }
  1824. $data.=str_replace("enews.var",$v,str_replace("enews.name",$cname[$v],$temp));
  1825. }
  1826. return "<table width=100% align=center cellpadding=3 cellspacing=1 bgcolor=#DBEAF5>".$data."</table>";
  1827. }
  1828. //返回br项
  1829. function ReturnMTobrF($enter,$tid,$dof="tobr"){
  1830. global $empire,$dbtbpre;
  1831. $record="<!--record-->";
  1832. $field="<!--field--->";
  1833. $f=",";
  1834. $sql=$empire->query("select f from {$dbtbpre}enewsf where ".$dof."=0 and tid='$tid'");
  1835. while($r=$empire->fetch($sql))
  1836. {
  1837. if(strstr($enter,$field.$r[f].$record))
  1838. {
  1839. $f.=$r[f].",";
  1840. }
  1841. }
  1842. return $f;
  1843. }
  1844. //增加模型
  1845. function AddM($add,$cname,$cchange,$schange,$center,$cqenter,$menter,$listand,$ltempf,$ptempf,$canadd,$canedit,$listorder,$userid,$username){
  1846. global $empire,$dbtbpre;
  1847. $tid=(int)$add['tid'];
  1848. $tbname=RepPostVar($add['tbname']);
  1849. if(empty($add[mname])||!$tid||!$tbname)
  1850. {
  1851. printerror("EmptyM","history.go(-1)");
  1852. }
  1853. $listfile=eReturnCPath(str_replace('.','',$add[listfile]),'');
  1854. CheckLevel($userid,$username,$classid,"m");//验证权限
  1855. //组合采集项
  1856. $cj=TogMCj($cname,$cchange);
  1857. //组合搜索项
  1858. $searchvar=TogMSearch($cname,$schange);
  1859. //组合必填项
  1860. $mustqenterf=TogMustf($cname,$menter);
  1861. //组合结合项
  1862. $listandf=TogMustf($cname,$listand);
  1863. //组合排序项
  1864. $orderf=TogMustf($cname,$listorder);
  1865. //组合投稿项
  1866. $qenter=TogMqenter($cname,$cqenter);
  1867. //组合可增加项
  1868. $canaddf=TogMustf($cname,$canadd);
  1869. //组合可修改项
  1870. $caneditf=TogMustf($cname,$canedit);
  1871. //组合录入项
  1872. $er=TogMEnter($cname,$center,$ltempf,$ptempf,$tid);
  1873. $enter=$er[0]; //录入项
  1874. $listtempvar=$er[1]; //列表模板项
  1875. $tempvar=$er[2]; //内容模板项
  1876. //自动生成表单
  1877. if($add[mtype])
  1878. {
  1879. $add[mtemp]=ReturnMtemp($cname,$center);
  1880. }
  1881. if($add[qmtype])
  1882. {
  1883. $add[qmtemp]=ReturnQmtemp($cname,$cqenter);
  1884. }
  1885. $setandf=(int)$add['setandf'];
  1886. $add[definfovoteid]=(int)$add[definfovoteid];
  1887. $showmod=(int)$add['showmod'];
  1888. $usemod=(int)$add['usemod'];
  1889. $myorder=(int)$add['myorder'];
  1890. $add[printtempid]=(int)$add[printtempid];
  1891. $sql=$empire->query("insert into {$dbtbpre}enewsmod(mname,mtemp,mzs,cj,enter,tempvar,sonclass,searchvar,tid,tbname,qenter,mustqenterf,qmtemp,listandf,setandf,listtempvar,qmname,canaddf,caneditf,definfovoteid,showmod,usemod,myorder,orderf,isdefault,listfile,printtempid) values('$add[mname]','".addslashes($add[mtemp])."','$add[mzs]','$cj','$enter','$tempvar','','$searchvar',$tid,'$tbname','$qenter','$mustqenterf','".addslashes($add[qmtemp])."','".addslashes($listandf)."','$setandf','$listtempvar','$add[qmname]','$canaddf','$caneditf',$add[definfovoteid],'$showmod','$usemod','$myorder','$orderf',0,'$listfile','$add[printtempid]');");
  1892. $mid=$empire->lastid();
  1893. UpdateTbDefMod($tid,$tbname,$mid);
  1894. //更新表单
  1895. ChangeMForm($mid,$tid,$add[mtemp]);
  1896. ChangeQmForm($mid,$tid,$add[qmtemp]);
  1897. //采集文件
  1898. ChangeMCj($mid,$tid,$cj);
  1899. GetConfig(1);//更新缓存
  1900. if($sql)
  1901. {
  1902. insert_dolog("mid=".$mid."<br>m=".$add[mname]);//操作日志
  1903. printerror("AddMSuccess","db/ListM.php?tid=$tid&tbname=$tbname");
  1904. }
  1905. else
  1906. {
  1907. printerror("DbError","history.go(-1)");
  1908. }
  1909. }
  1910. //修改模型
  1911. function EditM($add,$cname,$cchange,$schange,$center,$cqenter,$menter,$listand,$ltempf,$ptempf,$canadd,$canedit,$listorder,$userid,$username){
  1912. global $empire,$dbtbpre;
  1913. $tid=(int)$add['tid'];
  1914. $tbname=RepPostVar($add['tbname']);
  1915. $add[mid]=(int)$add[mid];
  1916. if(empty($add[mname])||empty($add[mid])||!$tid||!$tbname)
  1917. {
  1918. printerror("EmptyM","history.go(-1)");
  1919. }
  1920. $listfile=eReturnCPath(str_replace('.','',$add[listfile]),'');
  1921. //验证权限
  1922. CheckLevel($userid,$username,$classid,"m");
  1923. //组合采集项
  1924. $cj=TogMCj($cname,$cchange);
  1925. //组合搜索项
  1926. $searchvar=TogMSearch($cname,$schange);
  1927. //组合必填项
  1928. $mustqenterf=TogMustf($cname,$menter);
  1929. //组合结合项
  1930. $listandf=TogMustf($cname,$listand);
  1931. //组合排序项
  1932. $orderf=TogMustf($cname,$listorder);
  1933. //组合投稿项
  1934. $qenter=TogMqenter($cname,$cqenter);
  1935. //组合可增加项
  1936. $canaddf=TogMustf($cname,$canadd);
  1937. //组合可修改项
  1938. $caneditf=TogMustf($cname,$canedit);
  1939. //组合录入项
  1940. $er=TogMEnter($cname,$center,$ltempf,$ptempf,$tid);
  1941. $enter=$er[0]; //录入项
  1942. $listtempvar=$er[1]; //列表模板项
  1943. $tempvar=$er[2]; //内容模板项
  1944. //自动生成表单
  1945. if($add[mtype])
  1946. {
  1947. $add[mtemp]=ReturnMtemp($cname,$center);
  1948. }
  1949. if($add[qmtype])
  1950. {
  1951. $add[qmtemp]=ReturnQmtemp($cname,$cqenter);
  1952. }
  1953. $setandf=(int)$add['setandf'];
  1954. $add[definfovoteid]=(int)$add[definfovoteid];
  1955. $showmod=(int)$add['showmod'];
  1956. $usemod=(int)$add['usemod'];
  1957. $myorder=(int)$add['myorder'];
  1958. $add[printtempid]=(int)$add[printtempid];
  1959. $sql=$empire->query("update {$dbtbpre}enewsmod set mname='$add[mname]',mtemp='".addslashes($add[mtemp])."',mzs='$add[mzs]',cj='$cj',enter='$enter',tempvar='$tempvar',searchvar='$searchvar',qenter='$qenter',mustqenterf='$mustqenterf',qmtemp='".addslashes($add[qmtemp])."',listandf='".addslashes($listandf)."',setandf=$setandf,listtempvar='$listtempvar',qmname='$add[qmname]',canaddf='$canaddf',caneditf='$caneditf',definfovoteid=$add[definfovoteid],showmod='$showmod',usemod='$usemod',myorder='$myorder',orderf='$orderf',listfile='$listfile',printtempid='$add[printtempid]' where mid='$add[mid]'");
  1960. //更新表单
  1961. ChangeMForm($add[mid],$tid,$add[mtemp]);
  1962. ChangeQmForm($add[mid],$tid,$add[qmtemp]);
  1963. //采集文件
  1964. ChangeMCj($add[mid],$tid,$cj);
  1965. GetConfig(1);//更新缓存
  1966. if($sql)
  1967. {
  1968. //操作日志
  1969. insert_dolog("mid=".$add[mid]."<br>m=".$add[mname]);
  1970. printerror("EditMSuccess","db/ListM.php?tid=$tid&tbname=$tbname");
  1971. }
  1972. else
  1973. {
  1974. printerror("DbError","history.go(-1)");
  1975. }
  1976. }
  1977. //删除模型
  1978. function DelM($mid,$tid,$tbname,$userid,$username){
  1979. global $empire,$dbtbpre;
  1980. $tid=(int)$tid;
  1981. $tbname=RepPostVar($tbname);
  1982. $mid=(int)$mid;
  1983. if(empty($mid)||!$tid||!$tbname)
  1984. {
  1985. printerror("EmptyMid","history.go(-1)");
  1986. }
  1987. //验证权限
  1988. CheckLevel($userid,$username,$classid,"m");
  1989. $r=$empire->fetch1("select mname,isdefault from {$dbtbpre}enewsmod where mid='$mid'");
  1990. $sql=$empire->query("delete from {$dbtbpre}enewsmod where mid='$mid'");
  1991. $empire->query("delete from {$dbtbpre}enewsinfotype where mid='$mid'");//删除主题分类
  1992. DelFiletext("../data/html/".$mid.".php");
  1993. DelFiletext("../data/html/q".$mid.".php");
  1994. DelFiletext("../data/html/cj".$mid.".php");
  1995. DelFiletext("../data/html/editcj".$mid.".php");
  1996. //表默认模型
  1997. if($r[isdefault])
  1998. {
  1999. $modr=$empire->fetch1("select mid from {$dbtbpre}enewsmod where tid='$tid' order by mid");
  2000. if($modr[mid])
  2001. {
  2002. $empire->query("update {$dbtbpre}enewstable set mid='$modr[mid]' where tid='$tid'");
  2003. $empire->query("update {$dbtbpre}enewsmod set isdefault=1 where mid='$modr[mid]'");
  2004. }
  2005. }
  2006. GetConfig(1);//更新缓存
  2007. if($sql)
  2008. {
  2009. insert_dolog("mid=".$mid."<br>m=".$r[mname]);//操作日志
  2010. printerror("DelMSuccess","db/ListM.php?tid=$tid&tbname=$tbname");
  2011. }
  2012. else
  2013. {
  2014. printerror("DbError","history.go(-1)");
  2015. }
  2016. }
  2017. //默认模型
  2018. function DefM($mid,$tid,$tbname,$userid,$username){
  2019. global $empire,$dbtbpre;
  2020. $tid=(int)$tid;
  2021. $tbname=RepPostVar($tbname);
  2022. $mid=(int)$mid;
  2023. if(empty($mid)||!$tid||!$tbname)
  2024. {
  2025. printerror("EmptyDefMid","history.go(-1)");
  2026. }
  2027. //验证权限
  2028. CheckLevel($userid,$username,$classid,"m");
  2029. $r=$empire->fetch1("select mname from {$dbtbpre}enewsmod where mid='$mid'");
  2030. $empire->query("update {$dbtbpre}enewsmod set isdefault=0 where tid='$tid'");
  2031. $sql=$empire->query("update {$dbtbpre}enewsmod set isdefault=1 where mid='$mid'");
  2032. $empire->query("update {$dbtbpre}enewstable set mid='$mid' where tid='$tid'");
  2033. GetConfig(1);//更新缓存
  2034. if($sql)
  2035. {
  2036. insert_dolog("mid=".$mid."<br>m=".$r[mname]);//操作日志
  2037. printerror("DefMSuccess","db/ListM.php?tid=$tid&tbname=$tbname");
  2038. }
  2039. else
  2040. {
  2041. printerror("DbError","history.go(-1)");
  2042. }
  2043. }
  2044. //更新模型表单文件
  2045. function ChangeAllModForm($add,$userid,$username){
  2046. global $empire,$dbtbpre;
  2047. //验证权限
  2048. CheckLevel($userid,$username,$classid,"changedata");
  2049. $sql=$empire->query("select mid,tid,mtemp,qmtemp,cj from {$dbtbpre}enewsmod");
  2050. while($r=$empire->fetch($sql))
  2051. {
  2052. ChangeMForm($r[mid],$r[tid],$r[mtemp]);//更新表单
  2053. ChangeQmForm($r[mid],$r[tid],$r[qmtemp]);//更新前台表单
  2054. ChangeMCj($r[mid],$r[tid],$r[cj]);//采集表单
  2055. //更新栏目导航
  2056. if($add['ChangeClass']==1)
  2057. {
  2058. GetSearch($r[mid]);
  2059. }
  2060. }
  2061. //操作日志
  2062. insert_dolog("ChangeClass=$add[ChangeClass]");
  2063. printerror("ChangeAllModFormSuccess","history.go(-1)");
  2064. }
  2065. //导入系统模型
  2066. function LoadInMod($add,$file,$file_name,$file_type,$file_size,$userid,$username){
  2067. global $empire,$dbtbpre,$phome_db_dbchar;
  2068. //验证权限
  2069. CheckLevel($userid,$username,$classid,"table");
  2070. $tbname=RepPostVar(trim($add['tbname']));
  2071. if(!$file_name||!$file_size||!$tbname)
  2072. {
  2073. printerror("EmptyLoadInMod","");
  2074. }
  2075. //扩展名
  2076. $filetype=GetFiletype($file_name);
  2077. if($filetype!=".mod")
  2078. {
  2079. printerror("LoadInModMustmod","");
  2080. }
  2081. //表名是否已存在
  2082. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$tbname' limit 1");
  2083. if($num)
  2084. {
  2085. printerror("HaveLoadInTb","");
  2086. }
  2087. //上传文件
  2088. $path=ECMS_PATH."e/data/tmp/mod/uploadm".time().make_password(10).".php";
  2089. $cp=@move_uploaded_file($file,$path);
  2090. if(!$cp)
  2091. {
  2092. printerror("EmptyLoadInMod","");
  2093. }
  2094. DoChmodFile($path);
  2095. @include($path);
  2096. UpdateTbDefMod($tid,$tbname,$mid);
  2097. //公共变量
  2098. TogSaveTxtF(1);
  2099. GetConfig(1);//更新缓存
  2100. //生成模型表单文件
  2101. $modr=$empire->fetch1("select mtemp,qmtemp,cj from {$dbtbpre}enewsmod where mid='$mid'");
  2102. ChangeMForm($mid,$tid,$modr[mtemp]);//更新表单
  2103. ChangeQmForm($mid,$tid,$modr[qmtemp]);//更新前台表单
  2104. ChangeMCj($mid,$tid,$modr[cj]);//采集表单
  2105. //删除文件
  2106. DelFiletext($path);
  2107. //操作日志
  2108. insert_dolog("tid=$tid&tb=$tbname<br>mid=$mid");
  2109. printerror("LoadInModSuccess","db/ListTable.php");
  2110. }
  2111. //导出系统模型
  2112. function LoadOutMod($add,$userid,$username){
  2113. global $empire,$dbtbpre;
  2114. $tid=(int)$add['tid'];
  2115. $tbname=RepPostVar($add['tbname']);
  2116. $mid=(int)$add['mid'];
  2117. if(!$tid||!$tbname||!$mid)
  2118. {
  2119. printerror("EmptyLoadMod","");
  2120. }
  2121. $mr=$empire->fetch1("select * from {$dbtbpre}enewsmod where mid=$mid and tid=$tid");
  2122. if(!$mr['mid'])
  2123. {
  2124. printerror("EmptyLoadMod","");
  2125. }
  2126. $tr=$empire->fetch1("select tbname,tname,tsay from {$dbtbpre}enewstable where tid=$tid");
  2127. if(!$tr['tbname'])
  2128. {
  2129. printerror("EmptyLoadMod","");
  2130. }
  2131. //数据表结构
  2132. $loadmod="<?php
  2133. ".LoadModReturnstru($dbtbpre."ecms_".$mr['tbname'],$mr['tbname'],0)."\r\n";
  2134. $loadmod.=LoadModReturnstru($dbtbpre."ecms_".$mr['tbname']."_data_1",$mr['tbname'],5)."\r\n";
  2135. $loadmod.=LoadModReturnstru($dbtbpre."ecms_".$mr['tbname']."_doc",$mr['tbname'],1)."\r\n";
  2136. $loadmod.=LoadModReturnstru($dbtbpre."ecms_".$mr['tbname']."_doc_data",$mr['tbname'],4)."\r\n";
  2137. $loadmod.=LoadModReturnstru($dbtbpre."ecms_infoclass_".$mr['tbname'],$mr['tbname'],2)."\r\n";
  2138. $loadmod.=LoadModReturnstru($dbtbpre."ecms_infotmp_".$mr['tbname'],$mr['tbname'],3)."\r\n";
  2139. //数据表
  2140. $loadmod.="\$empire->query(\"insert into \".\$dbtbpre.\"enewstable(tbname,tname,tsay,isdefault,datatbs,deftb,yhid,mid) values('\$tbname','".$tr[tname]."','".LMEscape_str($tr[tsay])."',0,',1,','1',0,0);\");
  2141. \$tid=\$empire->lastid();
  2142. ";
  2143. //字段
  2144. $fsql=$empire->query("select * from {$dbtbpre}enewsf where tid=$tid order by fid");
  2145. while($fr=$empire->fetch($fsql))
  2146. {
  2147. $loadmod.="\$empire->query(\"insert into \".\$dbtbpre.\"enewsf(f,fname,fform,fhtml,fzs,isadd,isshow,iscj,cjhtml,myorder,ftype,flen,dotemp,tid,tbname,savetxt,fvalue,iskey,tobr,dohtml,qfhtml,isonly,linkfieldval,samedata,fformsize,tbdataf,ispage,adddofun,editdofun,qadddofun,qeditdofun,linkfieldtb,linkfieldshow,editorys,issmalltext) values('$fr[f]','$fr[fname]','$fr[fform]','".LMEscape_str($fr['fhtml'])."','".LMEscape_str($fr[fzs])."',$fr[isadd],$fr[isshow],$fr[iscj],'".LMEscape_str($fr[cjhtml])."',$fr[myorder],'$fr[ftype]','$fr[flen]',$fr[dotemp],\$tid,'\$tbname',$fr[savetxt],'".LMEscape_str($fr[fvalue])."',$fr[iskey],$fr[tobr],$fr[dohtml],'".LMEscape_str($fr[qfhtml])."',$fr[isonly],'".LMEscape_str($fr[linkfieldval])."',$fr[samedata],'$fr[fformsize]','$fr[tbdataf]','$fr[ispage]','".LMEscape_str($fr[adddofun])."','".LMEscape_str($fr[editdofun])."','".LMEscape_str($fr[qadddofun])."','".LMEscape_str($fr[qeditdofun])."','".LMEscape_str($fr[linkfieldtb])."','".LMEscape_str($fr[linkfieldshow])."','$fr[editorys]','$fr[issmalltext]');\");
  2148. ";
  2149. }
  2150. //模型
  2151. $loadmod.="\$empire->query(\"insert into \".\$dbtbpre.\"enewsmod(mname,mtemp,mzs,cj,enter,tempvar,sonclass,searchvar,tid,tbname,qenter,mustqenterf,qmtemp,listandf,setandf,listtempvar,qmname,canaddf,caneditf,definfovoteid,showmod,usemod,myorder,orderf,isdefault,listfile,printtempid) values('$mr[mname]','".LMEscape_str($mr[mtemp])."','".LMEscape_str($mr[mzs])."','".LMEscape_str($mr[cj])."','".LMEscape_str($mr[enter])."','".LMEscape_str($mr[tempvar])."','','".LMEscape_str($mr[searchvar])."',\$tid,'\$tbname','".LMEscape_str($mr[qenter])."','".LMEscape_str($mr[mustqenterf])."','".LMEscape_str($mr[qmtemp])."','".LMEscape_str($mr[listandf])."',$mr[setandf],'".LMEscape_str($mr[listtempvar])."','".LMEscape_str($mr[qmname])."','".LMEscape_str($mr[canaddf])."','".LMEscape_str($mr[caneditf])."',0,0,0,0,'".LMEscape_str($mr[orderf])."',0,'',0);\");
  2152. \$mid=\$empire->lastid();
  2153. ?>";
  2154. $file=$tr['tbname'].time().".mod";
  2155. $filepath=ECMS_PATH."e/data/tmp/mod/".$file;
  2156. WriteFiletext_n($filepath,AddCheckViewTempCode().$loadmod);
  2157. DownLoadFile($file,$filepath,1);
  2158. //操作日志
  2159. insert_dolog("tid=$tid&tb=$tr[tbname]<br>mid=$mid&m=$mr[mname]");
  2160. exit();
  2161. }
  2162. //返回数据表结构
  2163. function LoadModReturnstru($table,$tb,$ecms=0){
  2164. global $empire;
  2165. $usql=$empire->query("SET SQL_QUOTE_SHOW_CREATE=1;");//设置引号
  2166. $r=$empire->fetch1("SHOW CREATE TABLE `$table`;");//数据表结构
  2167. $create=str_replace("\"","\\\"",$r[1]);
  2168. $create=LoadModToMysqlFour($create);
  2169. //替换表
  2170. if($ecms==1)
  2171. {
  2172. $reptb="\$dbtbpre.\"ecms_\".\$tbname.\"_doc\"";
  2173. }
  2174. elseif($ecms==2)
  2175. {
  2176. $reptb="\$dbtbpre.\"ecms_infoclass_\".\$tbname";
  2177. }
  2178. elseif($ecms==3)
  2179. {
  2180. $reptb="\$dbtbpre.\"ecms_infotmp_\".\$tbname";
  2181. }
  2182. elseif($ecms==4)
  2183. {
  2184. $reptb="\$dbtbpre.\"ecms_\".\$tbname.\"_doc_data\"";
  2185. }
  2186. elseif($ecms==5)
  2187. {
  2188. $reptb="\$dbtbpre.\"ecms_\".\$tbname.\"_data_1\"";
  2189. }
  2190. else
  2191. {
  2192. $reptb="\$dbtbpre.\"ecms_\".\$tbname";
  2193. }
  2194. $dumpsql.="\$empire->query(str_replace(\"".$table."\",$reptb,SetCreateTable(\"".$create."\",\$phome_db_dbchar)));\r\n";
  2195. return $dumpsql;
  2196. }
  2197. //转为Mysql4.0格式
  2198. function LoadModToMysqlFour($query){
  2199. $exp="ENGINE=";
  2200. if(!strstr($query,$exp))
  2201. {
  2202. return $query;
  2203. }
  2204. $exp1=" ";
  2205. $r=explode($exp,$query);
  2206. //取得表类型
  2207. $r1=explode($exp1,$r[1]);
  2208. $returnquery=$r[0]."TYPE=".$r1[0];
  2209. return $returnquery;
  2210. }
  2211. //字符过虑
  2212. function LMEscape_str($str){
  2213. $str=mysql_escape_string($str);
  2214. $str=str_replace('\\\'','\'\'',$str);
  2215. $str=str_replace("\\\\","\\\\\\\\",$str);
  2216. $str=str_replace('$','\$',$str);
  2217. return $str;
  2218. }
  2219. ?>