PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/web/source/site/multi.ctrl.php

https://gitlab.com/llqbaimao/o2o
PHP | 186 lines | 174 code | 8 blank | 4 comment | 42 complexity | 10df594ca5ac1e2adc020317214b1cbb MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.1
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. $dos = array('display', 'post', 'del', 'default', 'copy', 'quickmenu');
  8. $do = in_array($do, $dos) ? $do : 'display';
  9. $setting = uni_setting($_W['uniacid'], 'default_site');
  10. $default_site = intval($setting['default_site']);
  11. if($do == 'quickmenu') {
  12. $id = intval($_GPC['mtid']);
  13. $multi = pdo_fetch('SELECT id,quickmenu FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  14. if(empty($multi)) {
  15. message('微站不存在或已删除', referer(), 'error');
  16. }
  17. $modules = uni_modules();
  18. $quickmenu = iunserializer($multi['quickmenu']);
  19. if(!is_array($quickmenu)) {
  20. $quickmenu = array();
  21. }
  22. if (checksubmit('submit')) {
  23. $module = array();
  24. if (!empty($_GPC['module'])) {
  25. foreach ($_GPC['module'] as $row) {
  26. if (isset($modules[$row])) {
  27. $module[] = $row;
  28. }
  29. }
  30. }
  31. $params = $insert = array(':position' => '3');
  32. $sql = 'DELETE FROM ' . tablename('site_nav') . " WHERE `multiid` = :multiid AND `position` = :position AND `module` <> :module";
  33. $params[':multiid'] = $id;
  34. $params[':module'] = '';
  35. $insert['uniacid'] = $_W['uniacid'];
  36. $insert['multiid'] = $id;
  37. $insert['status'] = '1';
  38. if (pdo_query($sql, $params)) {
  39. foreach ($module as $value) {
  40. $entry = module_entries($value, array('home'));
  41. $insert['module'] = $value;
  42. $insert['name'] = $entry['home'][0]['title'];
  43. $insert['url'] = $entry['home'][0]['url'];
  44. pdo_insert('site_nav', $insert);
  45. }
  46. }
  47. $quickmenu = array(
  48. 'template' => $_GPC['template'],
  49. 'enablemodule' => $module,
  50. );
  51. pdo_update('site_multi', array('quickmenu' => iserializer($quickmenu)), array('uniacid' => $_W['uniacid'], 'id' => $id));
  52. message('快捷菜单模板设置成功!', url('site/multi/quickmenu', array('mtid' => $id)), 'success');
  53. }
  54. $path = IA_ROOT . '/app/themes/quick';
  55. if (is_dir($path)) {
  56. if ($handle = opendir($path)) {
  57. while (false !== ($templatepath = readdir($handle))) {
  58. $ext = pathinfo($templatepath);
  59. $ext = $ext['extension'];
  60. if ($templatepath != '.' && $templatepath != '..' && !empty($ext)) {
  61. $pathinfo = pathinfo($templatepath);
  62. $template[] = $pathinfo['filename'];
  63. }
  64. }
  65. }
  66. }
  67. $spcmodules = array('basic', 'news', 'recharge');
  68. foreach ($modules as $key=>$module) {
  69. if (in_array($module['name'], $spcmodules)) {
  70. continue;
  71. }
  72. if (in_array($module['name'], $sysmodules)) {
  73. unset($modules[$key]);
  74. }
  75. }
  76. template('multi/quickmenu');
  77. }
  78. if($do == 'post') {
  79. $id = intval($_GPC['multiid']);
  80. if(!empty($id)) {
  81. $multi = pdo_fetch('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  82. if(empty($multi)) {
  83. message('微站不存在或已删除', referer(), 'error');
  84. }
  85. $multi['site_info'] = iunserializer($multi['site_info']) ? iunserializer($multi['site_info']) : array();
  86. }
  87. $styles = pdo_fetchall('SELECT * FROM ' . tablename('site_styles') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid']));
  88. if(checksubmit('submit')) {
  89. if (checksubmit('submit')) {
  90. $pdata['title'] = trim($_GPC['title']) ? trim($_GPC['title']) : message('请填写站点标识', referer(), 'error');
  91. $pdata['styleid'] = intval($_GPC['styleid']);
  92. $pdata['status'] = intval($_GPC['status']);
  93. $pdata['site_info'] = iserializer(array(
  94. 'sitename' => $_GPC['sitename'],
  95. 'keywords' => $_GPC['keywords'],
  96. 'description' => $_GPC['description'],
  97. 'footer' => htmlspecialchars_decode($_GPC['footer'])
  98. ));
  99. if(!empty($id)) {
  100. pdo_update('site_multi', $pdata, array('uniacid' => $_W['uniacid'], 'id' => $id));
  101. } else {
  102. $pdata['uniacid'] = $_W['uniacid'];
  103. pdo_insert('site_multi', $pdata);
  104. }
  105. message('更新站点信息成功!', url('site/multi/display'), 'success');
  106. }
  107. }
  108. template('multi/post');
  109. }
  110. if($do == 'display') {
  111. $templates = uni_templates();
  112. $multis = pdo_fetchall('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid']));
  113. foreach($multis as &$li) {
  114. $li['style'] = pdo_fetch('SELECT * FROM ' .tablename('site_styles') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $li['styleid']));
  115. }
  116. template('multi/display');
  117. }
  118. if($do == 'del') {
  119. $id = intval($_GPC['id']);
  120. if($default_site == $id) {
  121. message('您删除的微站是默认微站,删除前先指定其他微站为默认微站', referer(), 'error');
  122. }
  123. pdo_delete('site_nav', array('uniacid' => $_W['uniacid'], 'multiid' => $id));
  124. $rid = pdo_fetchcolumn('SELECT rid FROM ' .tablename('cover_reply') . ' WHERE uniacid = :uniacid AND multiid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  125. if(pdo_delete('rule', array('id' => $rid, 'uniacid' => $_W['uniacid'])) !== false) {
  126. pdo_delete('rule_keyword', array('rid' => $rid));
  127. pdo_delete('cover_reply', array('rid' => $rid, 'multiid' => $id));
  128. pdo_delete('stat_rule', array('rid' => $rid));
  129. pdo_delete('stat_keyword', array('rid' => $rid));
  130. }
  131. pdo_delete('site_multi', array('uniacid' => $_W['uniacid'], 'id' => $id));
  132. message('删除微站成功', referer(), 'success');
  133. }
  134. if($do == 'copy') {
  135. $id = intval($_GPC['multiid']);
  136. $multi = pdo_fetch('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  137. if(empty($multi)) {
  138. message('微站不存在或已删除', referer(), 'error');
  139. }
  140. $multi['title'] = $multi['title'] . '_' . random(6);
  141. unset($multi['id']);
  142. pdo_insert('site_multi', $multi);
  143. $multi_id = pdo_insertid();
  144. if(!$multi_id) {
  145. message('复制微站出错', '', 'error');
  146. } else {
  147. $navs = pdo_fetchall('SELECT * FROM ' . tablename('site_nav') . ' WHERE uniacid = :uniacid AND multiid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  148. if(!empty($navs)) {
  149. foreach($navs as &$nav) {
  150. unset($nav['id']);
  151. $nav['multiid'] = $multi_id;
  152. pdo_insert('site_nav', $nav);
  153. }
  154. }
  155. $cover = pdo_fetch('SELECT * FROM ' . tablename('cover_reply') . ' WHERE uniacid = :uniacid AND multiid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  156. if(!empty($cover)) {
  157. $rule = pdo_fetch('SELECT * FROM ' . tablename('rule') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $cover['rid']));
  158. $keywords = pdo_fetchall('SELECT * FROM ' . tablename('rule_keyword') . ' WHERE uniacid = :uniacid AND rid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $cover['rid']));
  159. if(!empty($rule) && !empty($keywords)) {
  160. $rule['name'] = $multi['title'] . '入口设置';
  161. unset($rule['id']);
  162. pdo_insert('rule', $rule);
  163. $new_rid = pdo_insertid();
  164. foreach($keywords as &$keyword) {
  165. unset($keyword['id']);
  166. $keyword['rid'] = $new_rid;
  167. pdo_insert('rule_keyword', $keyword);
  168. }
  169. unset($cover['id']);
  170. $cover['title'] = $multi['title'] . '入口设置';
  171. $cover['multiid'] = $multi_id;
  172. $cover['rid'] = $new_rid;
  173. pdo_insert('cover_reply', $cover);
  174. }
  175. }
  176. message('复制微站成功', url('site/multi/post', array('multiid' => $multi_id)), 'success');
  177. }
  178. }