PageRenderTime 73ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/e/class/moddofun.php

https://github.com/westeast/xwdede
PHP | 2271 lines | 2008 code | 50 blank | 213 comment | 246 complexity | c240a5afacc357851f0d41e3947c6c44 MD5 | raw file

Large files files are truncated, but you can click here to view the full 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. $

Large files files are truncated, but you can click here to view the full file