multi.ctrl.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  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. load()->model('site');
  8. load()->model('extension');
  9. $dos = array('display', 'post', 'del', 'default', 'copy', 'switch', 'quickmenu_display', 'quickmenu_post');
  10. $do = in_array($do, $dos) ? $do : 'display';
  11. $_W['page']['title'] = '微官网';
  12. $setting = uni_setting($_W['uniacid'], 'default_site');
  13. $default_site = intval($setting['default_site']);
  14. $default_site_status = pdo_getcolumn('site_multi', array('id' => $default_site), 'status');
  15. if ($default_site_status != 1) {
  16. pdo_update('site_multi', array('status' => 1), array('id' => $default_site));
  17. }
  18. if ($do == 'post') {
  19. if ($_W['isajax'] && $_W['ispost']) {
  20. $name = trim($_GPC['name']);
  21. $sql = "SELECT s.*, t.`name` AS `tname`, t.`title`, t.`type` FROM " . tablename('site_styles') . " AS s LEFT JOIN " . tablename('site_templates') . " AS t ON s.`templateid` = t.`id` WHERE s.`uniacid` = :uniacid AND s.`name` LIKE :name";
  22. $styles = pdo_fetchall($sql, array(':uniacid' => $_W['uniacid'], ':name' => "%{$name}%"));
  23. iajax(0, $styles, '');
  24. }
  25. $id = intval($_GPC['multiid']);
  26. if (checksubmit('submit')) {
  27. $bindhost = parse_url($_W['siteroot']);
  28. if ($bindhost['host'] == trim($_GPC['bindhost'])) {
  29. itoast('绑定域名有误', referer(), 'error');
  30. }
  31. $data = array(
  32. 'uniacid' => $_W['uniacid'],
  33. 'title' => trim($_GPC['title']),
  34. 'styleid' => intval($_GPC['styleid']),
  35. 'status' => intval($_GPC['status']),
  36. 'site_info' => iserializer(array(
  37. 'thumb' => trim($_GPC['thumb']),
  38. 'keyword' => trim($_GPC['keyword']),
  39. 'description' => trim($_GPC['description']),
  40. 'footer' => htmlspecialchars($_GPC['footer'])
  41. )),
  42. 'bindhost' => trim($_GPC['bindhost']),
  43. );
  44. if (empty($data['title'])) {
  45. itoast('请填写站点名称', referer(), 'error');
  46. }
  47. if (!empty($id)) {
  48. if ($id == $default_site) {
  49. $data['status'] = 1;
  50. }
  51. pdo_update('site_multi', $data, array('id' => $id));
  52. } else {
  53. pdo_insert('site_multi', $data);
  54. $id = pdo_insertid();
  55. }
  56. if (!empty($_GPC['keyword'])) {
  57. $cover = array(
  58. 'uniacid' => $_W['uniacid'],
  59. 'title' => $data['title'],
  60. 'keyword' => trim($_GPC['keyword']),
  61. 'url' => url('home', array('i' => $_W['uniacid'], 't' => $id)),
  62. 'description' => trim($_GPC['description']),
  63. 'thumb' => trim($_GPC['thumb']),
  64. 'module' => 'site',
  65. 'multiid' => $id,
  66. );
  67. site_cover($cover);
  68. }
  69. itoast('更新站点信息成功!', url('site/multi/display'), 'success');
  70. }
  71. if (!empty($id)) {
  72. $multi = pdo_fetch('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  73. if (empty($multi)) {
  74. itoast('微站不存在或已删除', referer(), 'error');
  75. }
  76. $multi['site_info'] = iunserializer($multi['site_info']) ? iunserializer($multi['site_info']) : array();
  77. }
  78. $temtypes = ext_template_type();
  79. $temtypes[] = array('name' => 'all', 'title' => '全部');
  80. $sql = 'SELECT `s`.*, `t`.`id` as `tid`, `t`.`name` AS `tname`, `t`.`title`, `t`.`type`, `t`.`sections` FROM ' . tablename('site_styles') . ' AS `s` LEFT JOIN ' . tablename('site_templates') . ' AS `t` ON `s`.`templateid` = `t`.`id` WHERE `s`.`uniacid` = :uniacid';
  81. $styles = pdo_fetchall($sql, array(':uniacid' => $_W['uniacid']), 'id');
  82. if (empty($multi)) {
  83. $multi = array(
  84. 'site_info' => array(),
  85. 'status' => 1,
  86. );
  87. }
  88. $multi['style'] = $styles[$multi['styleid']];
  89. template('site/post');
  90. }
  91. if ($do == 'display') {
  92. $pindex = max(1, intval($_GPC['page']));
  93. $psize = 10;
  94. $condition = '';
  95. $params = array();
  96. if (!empty($_GPC['keyword'])) {
  97. $condition .= " AND `title` LIKE :keyword";
  98. $params[':keyword'] = "%{$_GPC['keyword']}%";
  99. }
  100. $templates = uni_templates();
  101. $params[':uniacid'] = $_W['uniacid'];
  102. $multis = pdo_fetchall('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid'.$condition.' LIMIT '.($pindex -1)* $psize.','.$psize, $params);
  103. foreach ($multis as &$li) {
  104. $li['style'] = pdo_fetch('SELECT * FROM ' .tablename('site_styles') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $li['styleid']));
  105. $li['template'] = pdo_fetch("SELECT * FROM ".tablename('site_templates')." WHERE id = :id", array(':id' => $li['style']['templateid']));
  106. $li['site_info'] = (array)iunserializer($li['site_info']);
  107. $li['site_info']['thumb'] = tomedia($li['site_info']['thumb']);
  108. if (file_exists('../app/themes/'.$li['template']['name'].'/preview.jpg')) {
  109. $li['preview_thumb'] = $_W['siteroot'].'app/themes/'.$li['template']['name'].'/preview.jpg';
  110. } else {
  111. $li['preview_thumb'] = $_W['siteroot'].'web/resource/images/nopic-203.png';
  112. }
  113. }
  114. unset($li);
  115. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('site_multi') . " WHERE uniacid = :uniacid".$condition, $params);
  116. $pager = pagination($total, $pindex, $psize);
  117. template('site/display');
  118. }
  119. if ($do == 'del') {
  120. $id = intval($_GPC['id']);
  121. if ($default_site == $id) {
  122. itoast('您删除的微站是默认微站,删除前先指定其他微站为默认微站', referer(), 'error');
  123. }
  124. pdo_delete('site_nav', array('uniacid' => $_W['uniacid'], 'multiid' => $id));
  125. $rid = pdo_fetchcolumn('SELECT rid FROM ' .tablename('cover_reply') . ' WHERE uniacid = :uniacid AND multiid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  126. if(pdo_delete('rule', array('id' => $rid, 'uniacid' => $_W['uniacid'])) !== false) {
  127. pdo_delete('rule_keyword', array('rid' => $rid));
  128. pdo_delete('cover_reply', array('rid' => $rid, 'multiid' => $id));
  129. }
  130. pdo_delete('site_multi', array('uniacid' => $_W['uniacid'], 'id' => $id));
  131. itoast('删除微站成功', referer(), 'success');
  132. }
  133. if ($do == 'copy') {
  134. $id = intval($_GPC['multiid']);
  135. $multi = pdo_fetch('SELECT * FROM ' . tablename('site_multi') . ' WHERE uniacid = :uniacid AND id = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  136. if (empty($multi)) {
  137. itoast('微站不存在或已删除', referer(), 'error');
  138. }
  139. $multi['title'] = $multi['title'] . '_' . random(6);
  140. unset($multi['id']);
  141. pdo_insert('site_multi', $multi);
  142. $multi_id = pdo_insertid();
  143. if (!$multi_id) {
  144. itoast('复制微站出错', '', 'error');
  145. } else {
  146. $navs = pdo_fetchall('SELECT * FROM ' . tablename('site_nav') . ' WHERE uniacid = :uniacid AND multiid = :id', array(':uniacid' => $_W['uniacid'], ':id' => $id));
  147. if (!empty($navs)) {
  148. foreach ($navs as &$nav) {
  149. unset($nav['id']);
  150. $nav['multiid'] = $multi_id;
  151. pdo_insert('site_nav', $nav);
  152. }
  153. unset($nav);
  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($keyword);
  170. unset($cover['id']);
  171. $cover['title'] = $multi['title'] . '入口设置';
  172. $cover['multiid'] = $multi_id;
  173. $cover['rid'] = $new_rid;
  174. pdo_insert('cover_reply', $cover);
  175. }
  176. }
  177. itoast('复制微站成功', url('site/multi/post', array('multiid' => $multi_id)), 'success');
  178. }
  179. }
  180. if ($do == 'switch') {
  181. $id = intval($_GPC['id']);
  182. $multi_info = pdo_get('site_multi', array('id' => $id, 'uniacid' => $_W['uniacid']));
  183. if(empty($multi_info)) {
  184. itoast('微站不存在或已删除', referer(), 'error');
  185. }
  186. $data = array('status' => $multi_info['status'] == 1 ? 0 : 1);
  187. $result = pdo_update('site_multi', $data, array('id' => $id));
  188. if(!empty($result)) {
  189. iajax(0, '更新成功!', '');
  190. }else {
  191. iajax(-1, '请求失败!', '');
  192. }
  193. }
  194. if ($do == 'quickmenu_display' && $_W['isajax'] && $_W['ispost'] && $_W['role'] != 'operator') {
  195. $multiid = intval($_GPC['multiid']);
  196. if($multiid > 0){
  197. $page = pdo_get('site_page', array('multiid' => $multiid, 'type' => 2));
  198. }
  199. $params = !empty($page['params']) ? $page['params'] : 'null';
  200. $status = $page['status'] == 1 ? 1 : 0;
  201. $modules = uni_modules();
  202. $modules = !empty($modules) ? $modules : 'null';
  203. iajax(0, array('params' => json_decode($params), 'status' => $status, 'modules' => $modules), '');
  204. }
  205. if ($do == 'quickmenu_post' && $_W['isajax'] && $_W['ispost']) {
  206. $params = $_GPC['postdata']['params'];
  207. if (empty($params)) {
  208. iajax(1, '请您先设计手机端页面.');
  209. }
  210. foreach ($params['position'] as &$val) {
  211. $val = $val == 'true' ? 1 : 0;
  212. }
  213. unset($val);
  214. $html = safe_gpc_html(htmlspecialchars_decode($_GPC['postdata']['html'], ENT_QUOTES));
  215. $html = preg_replace('/background\-image\:(\s)*url\(\"(.*)\"\)/U', 'background-image: url($2)', $html);
  216. $data = array(
  217. 'uniacid' => $_W['uniacid'],
  218. 'multiid' => intval($_GPC['multiid']),
  219. 'title' => '快捷菜单',
  220. 'description' => '',
  221. 'status' => intval($_GPC['status']),
  222. 'type' => 2,
  223. 'params' => json_encode($params),
  224. 'html' => $html,
  225. 'createtime' => TIMESTAMP,
  226. );
  227. $id = pdo_fetchcolumn("SELECT id FROM ".tablename('site_page')." WHERE multiid = :multiid AND type = 2", array(':multiid' => intval($_GPC['multiid'])));
  228. if (!empty($id)) {
  229. $result = pdo_update('site_page', $data, array('id' => $id));
  230. } else {
  231. $result = pdo_insert('site_page', $data);
  232. $id = pdo_insertid();
  233. }
  234. if ($result) {
  235. iajax(0, '保存成功!', '');
  236. } else {
  237. iajax(1, '保存失败!', '');
  238. }
  239. }