国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

206 lines
8.4KB

  1. <?php
  2. /**
  3. * 自定义表单列表
  4. *
  5. * @version $Id: diy_list.php 1 18:31 2010年7月12日Z tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022, DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. use DedeBIZ\Archive\DiyForm;
  12. use DedeBIZ\libraries\DataListCP;
  13. use DedeBIZ\Login\UserLogin;
  14. require_once(dirname(__FILE__)."/config.php");
  15. UserLogin::CheckPurview('c_New');
  16. $diyid = isset($diyid) && is_numeric($diyid) ? $diyid : 0;
  17. $action = isset($action) && in_array($action, array('post', 'list', 'edit', 'check', 'delete','excel')) ? $action : '';
  18. if (empty($diyid)) {
  19. showMsg(Lang("illegal_operation"), 'javascript:;');
  20. exit();
  21. }
  22. $diy = new DiyForm($diyid);
  23. if ($action == 'post') {
  24. if (empty($do)) {
  25. $postform = $diy->getForm('post', '', 'admin');
  26. include DEDEADMIN.'/templets/diy_post.htm';
  27. } else if ($do == 2) {
  28. $dede_fields = empty($dede_fields) ? '' : trim($dede_fields);
  29. $dede_fieldshash = empty($dede_fieldshash) ? '' : trim($dede_fieldshash);
  30. if (!empty($dede_fields)) {
  31. if ($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode)) {
  32. showMsg(Lang("diy_err_checkdata"), '-1');
  33. exit();
  34. }
  35. }
  36. $diyform = $dsql->getOne("SELECT * FROM `#@__diyforms` WHERE diyid=$diyid");
  37. if (!is_array($diyform)) {
  38. showmsg(Lang("diy_err_not_exists"), '-1');
  39. exit();
  40. }
  41. $addvar = $addvalue = '';
  42. if (!empty($dede_fields)) {
  43. $fieldarr = explode(';', $dede_fields);
  44. if (is_array($fieldarr)) {
  45. foreach ($fieldarr as $field) {
  46. if ($field == '') {
  47. continue;
  48. }
  49. $fieldinfo = explode(',', $field);
  50. if ($fieldinfo[1] == 'htmltext' || $fieldinfo[1] == 'textdata') {
  51. ${$fieldinfo[0]} = HtmlReplace(stripslashes(${$fieldinfo[0]}),1);
  52. ${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
  53. ${$fieldinfo[0]} = getFieldValue(${$fieldinfo[0]}, $fieldinfo[1], 0, 'add', '', 'member');
  54. } else {
  55. ${$fieldinfo[0]} = getFieldValue(${$fieldinfo[0]}, $fieldinfo[1], 0, 'add', '', 'member');
  56. }
  57. $addvar .= ', `'.$fieldinfo[0].'`';
  58. $addvalue .= ", '".${$fieldinfo[0]}."'";
  59. }
  60. }
  61. }
  62. $query = "INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar) VALUES (NULL, 0 $addvalue)";
  63. if ($dsql->ExecuteNoneQuery($query)) {
  64. $goto = "diy_list.php?action=list&diyid={$diy->diyid}";
  65. showmsg(Lang('diy_success_send'), $goto);
  66. } else {
  67. showmsg(Lang('diy_err_send'), '-1');
  68. }
  69. }
  70. } else if ($action == 'list') {
  71. $query = "SELECT * FROM {$diy->table} ORDER BY id DESC";
  72. $datalist = new DataListCP();
  73. $datalist->pagesize = 30;
  74. $datalist->SetParameter('action', 'list');
  75. $datalist->SetParameter('diyid', $diyid);
  76. $datalist->SetTemplate(DEDEADMIN.'/templets/diy_list.htm');
  77. $datalist->SetSource($query);
  78. $fieldlist = $diy->getFieldList();
  79. $datalist->Display();
  80. } else if ($action == 'edit') {
  81. if (empty($do)) {
  82. $id = isset($id) && is_numeric($id) ? $id : 0;
  83. if (empty($id)) {
  84. showMsg(Lang('diy_err_no_select'), 'javascript:;');
  85. exit();
  86. }
  87. $query = "SELECT * FROM {$diy->table} WHERE id=$id";
  88. $row = $dsql->GetOne($query);
  89. if (!is_array($row)) {
  90. showmsg(Lang("diy_err_not_exists"), '-1');
  91. exit();
  92. }
  93. $postform = $diy->getForm('edit', $row, 'admin');
  94. $fieldlist = $diy->getFieldList();
  95. $c1 = $row['ifcheck'] == 1 ? 'checked' : '';
  96. $c2 = $row['ifcheck'] == 0 ? 'checked' : '';
  97. include DEDEADMIN.'/templets/diy_edit_content.htm';
  98. } else if ($do == 2) {
  99. $dede_fields = empty($dede_fields) ? '' : trim($dede_fields);
  100. $diyform = $dsql->GetOne("SELECT * FROM `#@__diyforms` WHERE diyid=$diyid");
  101. $diyco = $dsql->GetOne("SELECT * FROM `$diy->table` WHERE id='$id'");
  102. if (!is_array($diyform)) {
  103. showmsg(Lang("diy_err_not_exists"), '-1');
  104. exit();
  105. }
  106. $addsql = '';
  107. if (!empty($dede_fields)) {
  108. $fieldarr = explode(';', $dede_fields);
  109. if (is_array($fieldarr)) {
  110. foreach ($fieldarr as $field) {
  111. if ($field == '') {
  112. continue;
  113. }
  114. $fieldinfo = explode(',', $field);
  115. if ($fieldinfo[1] == 'htmltext' || $fieldinfo[1] == 'textdata') {
  116. ${$fieldinfo[0]} = HtmlReplace(stripslashes(${$fieldinfo[0]}),1);
  117. ${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
  118. ${$fieldinfo[0]} = GetFieldValue(${$fieldinfo[0]}, $fieldinfo[1], 0, 'add', '', 'member');
  119. ${$fieldinfo[0]} = empty(${$fieldinfo[0]}) ? $diyco[$fieldinfo[0]] : ${$fieldinfo[0]};
  120. } else {
  121. ${$fieldinfo[0]} = GetFieldValue(${$fieldinfo[0]}, $fieldinfo[1], 0, 'add', '', 'diy', $fieldinfo[0]);
  122. ${$fieldinfo[0]} = empty(${$fieldinfo[0]}) ? $diyco[$fieldinfo[0]] : ${$fieldinfo[0]};
  123. }
  124. $addsql .= !empty($addsql) ? ',`'.$fieldinfo[0]."`='".${$fieldinfo[0]}."'" : '`'.$fieldinfo[0]."`='".${$fieldinfo[0]}."'";
  125. }
  126. }
  127. }
  128. $query = "UPDATE `$diy->table` SET $addsql WHERE id=$id";
  129. if ($dsql->ExecuteNoneQuery($query)) {
  130. $goto = "diy_list.php?action=list&diyid={$diy->diyid}";
  131. showmsg(Lang('operation_successful'), $goto);
  132. } else {
  133. showmsg(Lang('operation_successful'), '-1');
  134. }
  135. }
  136. } elseif ($action == 'check') {
  137. if (is_array($id) && is_all_numeric($id)) {
  138. $ids = implode(',', $id);
  139. } else {
  140. showmsg(Lang('diy_err_no_select'), '-1');
  141. exit();
  142. }
  143. $query = "UPDATE `$diy->table` SET ifcheck=1 WHERE id IN ($ids)";
  144. if ($dsql->ExecuteNoneQuery($query)) {
  145. showmsg(Lang('operation_successful'), "diy_list.php?action=list&diyid={$diy->diyid}");
  146. } else {
  147. showmsg(Lang('operation_failed'), "diy_list.php?action=list&diyid={$diy->diyid}");
  148. }
  149. } elseif ($action == 'delete') {
  150. if (empty($do)) {
  151. if (is_array($id)) {
  152. $ids = implode(',', $id);
  153. } else {
  154. showmsg(Lang('diy_err_no_select'), '-1');
  155. exit();
  156. }
  157. $query = "DELETE FROM `$diy->table` WHERE id IN ($ids)";
  158. if ($dsql->ExecuteNoneQuery($query)) {
  159. showmsg(Lang('operation_successful'), "diy_list.php?action=list&diyid={$diy->diyid}");
  160. } else {
  161. showmsg(Lang('operation_failed'), "diy_list.php?action=list&diyid={$diy->diyid}");
  162. }
  163. } else if ($do = 1) {
  164. $row = $dsql->GetOne("SELECT * FROM `$diy->table` WHERE id='$id'");
  165. if (file_exists($cfg_basedir.$row[$name])) {
  166. unlink($cfg_basedir.$row[$name]);
  167. $dsql->ExecuteNoneQuery("UPDATE `$diy->table` SET $name='' WHERE id='$id'");
  168. showmsg(Lang('operation_successful'), "diy_list.php?action=list&diyid={$diy->diyid}");
  169. } else {
  170. showmsg(Lang('diy_err_file_notexists'), '-1');
  171. }
  172. }
  173. }
  174. elseif ($action == 'excel') {
  175. ob_end_clean();//清除缓冲区,避免乱码
  176. header("Content-type:application/vnd.ms-excel");
  177. header("Content-Disposition:attachment;filename={$diy->name}_".date("Y-m-d").".xls");
  178. print(chr(0xEF).chr(0xBB).chr(0xBF));//清除bom
  179. $fieldlist = (array)$diy->getFieldList();
  180. echo "<table><tr>";
  181. foreach($fieldlist as $field=>$fielddata)
  182. {
  183. echo "<th>{$fielddata[0]}</th>";
  184. }
  185. echo "<th>".Lang('status')."</th>";
  186. echo "</tr>";
  187. $sql = "SELECT * FROM {$diy->table} ORDER BY id DESC";
  188. $dsql->SetQuery($sql);
  189. $dsql->Execute('t');
  190. while($arr = $dsql->GetArray('t'))
  191. {
  192. echo "<tr>";
  193. foreach($fieldlist as $key => $field)
  194. {
  195. echo "<td>".$arr[$key]."</td>";
  196. }
  197. $status = $arr['ifcheck'] == 1 ? Lang('reviewed') : Lang('not_approved');
  198. echo "<td>".$status."</td>";
  199. echo "</tr>";
  200. }
  201. echo "</table>";
  202. } else {
  203. showmsg(Lang("illegal_operation"), "-1");
  204. }
  205. ?>