PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/upload/src/applications/design/admin/PushController.php

https://gitlab.com/wuhang2003/phpwind
PHP | 303 lines | 267 code | 24 blank | 12 comment | 24 complexity | 58bd398f11faed328c46fe9ef57c35bf MD5 | raw file
  1. <?php
  2. Wind::import('ADMIN:library.AdminBaseController');
  3. /**
  4. * the last known user to change this file in the repository <$LastChangedBy: gao.wanggao $>
  5. * @author $Author: gao.wanggao $ Foxsee@aliyun.com
  6. * @copyright ©2003-2103 phpwind.com
  7. * @license http://www.phpwind.com
  8. * @version $Id: PushController.php 28818 2013-05-24 10:10:46Z gao.wanggao $
  9. * @package
  10. */
  11. class PushController extends AdminBaseController {
  12. public function run() {
  13. $page = (int)$this->getInput('page','get');
  14. $moduleid = (int)$this->getInput('moduleid');
  15. $pageid = (int)$this->getInput('pageid');
  16. $perpage = 10;
  17. $pushids = $pageids = $moduleids = $uids = $args = array();
  18. $page = $page > 1 ? $page : 1;
  19. list($start, $perpage) = Pw::page2limit($page, $perpage);
  20. if ($pageid) $args = array('pageid'=>$pageid);
  21. if ($moduleid) $args['moduleid']=$moduleid;
  22. if ($pageid && !$moduleid) {
  23. $pageinfo = $this->_getPageDs()->getPage($pageid);
  24. $moduleid = explode(',', $pageinfo['module_ids']);
  25. }
  26. $ds = $this->_getDataDs();
  27. Wind::import('SRV:design.srv.vo.PwDesignDataSo');
  28. $vo = new PwDesignDataSo();
  29. if ($moduleid) {
  30. $vo->setModuleid($moduleid);
  31. }
  32. $vo->setFromType(PwDesignData::FROM_PUSH);
  33. $list = $ds->searchData($vo, $perpage, $start);
  34. $count = $ds->countData($vo);
  35. $pagelist = $this->_getPageDs()->getPageList();
  36. foreach ($list AS $k=>$v) {
  37. $moduleids[] = $v['module_id'];
  38. $pushids[] = $v['from_id'];
  39. $_tmp = unserialize($v['extend_info']);
  40. $standard = unserialize($v['standard']);
  41. $list[$k]['title'] = $_tmp[$standard['sTitle']];
  42. $list[$k]['url'] = $_tmp[$standard['sUrl']];
  43. $list[$k]['intro'] = $_tmp[$standard['sIntro']];
  44. }
  45. array_unique($moduleids);
  46. $modules = $this->_getModuleDs()->fetchModule($moduleids);
  47. $pushs = $this->_getPushDs()->fetchPush($pushids);
  48. foreach($pushs AS $v) {
  49. $uids[] = $v['created_userid'];
  50. }
  51. $users = Wekit::load('user.PwUser')->fetchUserByUid($uids);
  52. foreach($pushs AS &$push) {
  53. $push['created_user'] = $users[$push['created_userid']]['username'];
  54. }
  55. $this->setOutput($moduleid, 'moduleid');
  56. $this->setOutput($pageid, 'pageid');
  57. $this->setOutput($modules, 'modules');
  58. $this->setOutput($pagelist, 'pagelist');
  59. $this->setOutput($pushs, 'pushs');
  60. $this->setOutput($list, 'list');
  61. $this->setOutput($args, 'args');
  62. $this->setOutput($count, 'count');
  63. $this->setOutput($page, 'page');
  64. $this->setOutput($perpage, 'perpage');
  65. $this->setOutput(ceil($count/$perpage), 'totalpage');
  66. }
  67. public function statusAction() {
  68. $status = (int)$this->getInput('status','get');
  69. $page = (int)$this->getInput('page','get');
  70. $moduleid = (int)$this->getInput('moduleid');
  71. $pageid = (int)$this->getInput('pageid');
  72. $perpage = 10;
  73. $pageids = $moduleids = $uids = array();
  74. $page = $page > 1 ? $page : 1;
  75. $args['status'] = $status ;
  76. if ($moduleid)$args['moduleid'] = $moduleid;
  77. if ($pageid && !$moduleid) {
  78. $pageinfo = $this->_getPageDs()->getPage($pageid);
  79. $moduleid = explode(',', $pageinfo['module_ids']);
  80. $args['pageid'] =$pageid;
  81. }
  82. list($start, $perpage) = Pw::page2limit($page, $perpage);
  83. $time = Pw::getTime();
  84. $ds = $this->_getPushDs();
  85. $vo = Wekit::load('design.srv.vo.PwDesignPushSo');
  86. $moduleid && $vo->setModuleid($moduleid);
  87. if ($status == 1)$vo->setStatus(1);
  88. if ($status == 2)$vo->setStatus(0);
  89. $vo->orderbyPushid(false);
  90. $list = $ds->searchPush($vo, $perpage, $start);
  91. $count = $ds->countPush($vo);
  92. foreach ($list AS $k=>$v) {
  93. $uids[] = $v['created_userid'];
  94. $moduleids[] = $v['module_id'];
  95. $_tmp = unserialize($v['push_extend']);
  96. $standard = unserialize($v['push_standard']);
  97. $list[$k]['title'] = $_tmp[$standard['sTitle']];
  98. $list[$k]['url'] = $_tmp[$standard['sUrl']];
  99. $list[$k]['intro'] = $_tmp[$standard['sIntro']];
  100. }
  101. array_unique($uids);
  102. array_unique($moduleids);
  103. $modules = $this->_getModuleDs()->fetchModule($moduleids);
  104. $pagelist = $this->_getPageDs()->getPageList();
  105. $users = Wekit::load('user.PwUser')->fetchUserByUid($uids);
  106. $this->setOutput($moduleid, 'moduleid');
  107. $this->setOutput($pageid, 'pageid');
  108. $this->setOutput($pagelist, 'pagelist');
  109. $this->setOutput($list, 'list');
  110. $this->setOutput($users, 'users');
  111. $this->setOutput($modules, 'modules');
  112. $this->setOutput($args, 'args');
  113. $this->setOutput($count, 'count');
  114. $this->setOutput($page, 'page');
  115. $this->setOutput($perpage, 'perpage');
  116. $this->setOutput(ceil($count/$perpage), 'totalpage');
  117. $this->setOutput($status, 'status');
  118. }
  119. public function shieldAction() {
  120. $page = (int)$this->getInput('page','get');
  121. $perpage = 10;
  122. $page = $page > 1 ? $page : 1;
  123. list($start, $perpage) = Pw::page2limit($page, $perpage);
  124. $count = $this->_getShieldDs()->countShield(0);
  125. $list = $this->_getShieldDs()->getShieldList(0,$start, $perpage);
  126. $this->setOutput($list, 'list');
  127. $this->setOutput('', 'args');
  128. $this->setOutput($count, 'count');
  129. $this->setOutput($page, 'page');
  130. $this->setOutput($perpage, 'perpage');
  131. $this->setOutput(ceil($count/$perpage), 'totalpage');
  132. }
  133. public function doshieldAction() {
  134. $dataid = (int)$this->getInput('dataid', 'post');
  135. $ds = $this->_getDataDs();
  136. $data = $ds->getData($dataid);
  137. if (!$data) $this->showError("operate.fail");
  138. switch ($data['from_type']) {
  139. case PwDesignData::FROM_PUSH:
  140. $resource = $ds->deleteData($dataid);
  141. $this->_getPushDs()->deletePush($data['from_id']);
  142. //$this->_getPushDs()->updateStatus($data['from_id'], PwDesignPush::ISSHIELD);
  143. break;
  144. case PwDesignData::FROM_AUTO:
  145. $resource = $ds->deleteData($dataid);
  146. $this->_getShieldDs()->addShield($data['from_app'], $data['from_id'], $data['module_id']);
  147. break;
  148. default:
  149. $this->showError("operate.fail");
  150. break;
  151. }
  152. $extend = unserialize($data['extend_info']);
  153. $delImages = $extend['standard_image'];
  154. Wekit::load('design.srv.PwDesignImage')->clearFiles($this->bo->moduleid, explode('|||', $delImages));
  155. if (!$data['is_reservation']) {
  156. Wind::import('SRV:design.srv.data.PwShieldData');
  157. $srv = new PwShieldData($data['module_id']);
  158. $srv->addShieldData();
  159. }
  160. $this->showMessage("operate.success");
  161. }
  162. public function doshielddeleteAction() {
  163. $shieldid = (int)$this->getInput('shieldid', 'post');
  164. if ($this->_getShieldDs()->deleteShield($shieldid)) {
  165. $this->showMessage("operate.success");
  166. } else {
  167. $this->showError("operate.fail");
  168. }
  169. }
  170. public function doshielddeletesAction() {
  171. $shieldids = $this->getInput('shieldids', 'post');
  172. foreach ((array)$shieldids AS $shieldid) {
  173. $this->_getShieldDs()->deleteShield($shieldid);
  174. }
  175. $this->showMessage("operate.success");
  176. }
  177. public function dopushAction() {
  178. $pushid = (int)$this->getInput('pushid','get');
  179. $pushDs = $this->_getPushDs();
  180. $push = $pushDs->getPush($pushid);
  181. $pushDs->updateStatus($pushid, PwDesignPush::ISSHOW);
  182. Wind::import('SRV:design.srv.data.PwAutoData');
  183. $srv = new PwAutoData($push['module_id']);
  184. $srv->addAutoData();
  185. $this->showMessage("operate.success");
  186. }
  187. public function delpushAction() {
  188. $pushid = (int)$this->getInput('pushid','get');
  189. if (!$pushid) $this->showError("operate.fail");
  190. $ds = $this->_getDataDs();
  191. $pushDs = $this->_getPushDs();
  192. $push = $pushDs->getPush($pushid);
  193. //TODO 权限
  194. if ($this->_getPushDs()->deletePush($pushid)) {
  195. Wind::import('SRV:design.srv.vo.PwDesignDataSo');
  196. $vo = new PwDesignDataSo();
  197. $vo->setModuleid($push['module_id']);
  198. $vo->setFromType(PwDesignData::FROM_PUSH);
  199. $vo->setFromid($pushid);
  200. $list = $ds->searchData($vo, 1, 0);
  201. if ($list) {
  202. $data = array_shift($list);
  203. $extend = unserialize($data['extend_info']);
  204. $delImages = $extend['standard_image'];
  205. Wekit::load('design.srv.PwDesignImage')->clearFiles($push['module_id'], explode('|||', $delImages));
  206. }
  207. $this->showMessage("operate.success");
  208. }
  209. $this->showError("operate.fail");
  210. }
  211. public function batchshieldAction() {
  212. $dataids = $this->getInput('dataids','post');
  213. $ds = $this->_getDataDs();
  214. Wind::import('SRV:design.srv.data.PwShieldData');
  215. foreach ($dataids AS $dataid) {
  216. $data = $ds->getData($dataid);
  217. if (!$data) continue;
  218. switch ($data['from_type']) {
  219. case PwDesignData::FROM_PUSH:
  220. $resource = $ds->deleteData($dataid);
  221. //$this->_getPushDs()->updateStatus($data['from_id'], PwDesignPush::ISSHIELD);
  222. $this->_getPushDs()->deletePush($data['from_id']);
  223. break;
  224. case PwDesignData::FROM_AUTO:
  225. $resource = $ds->deleteData($dataid);
  226. $this->_getShieldDs()->addShield($data['from_app'], $data['from_id'], $data['module_id']);
  227. break;
  228. default:
  229. $this->showError("operate.fail");
  230. break;
  231. }
  232. $srv = new PwShieldData($data['module_id']);
  233. $srv->addShieldData();
  234. }
  235. $this->showMessage("operate.success");
  236. }
  237. public function batchcheckAction() {
  238. $moduleids = array();
  239. $pushids = $this->getInput('pushids','post');
  240. $pushDs = $this->_getPushDs();
  241. $srv = $this->_getPushService();
  242. foreach ($pushids AS $pushid) {
  243. $pushInfo = $pushDs->getPush($pushid);
  244. $pushDs->updateStatus($pushid, PwDesignPush::ISSHOW);
  245. $moduleids[] = $pushInfo['module_id'];
  246. }
  247. $moduleids = array_unique($moduleids);
  248. Wind::import('SRV:design.srv.data.PwAutoData');
  249. foreach ($moduleids AS $moduleid) {
  250. $srv = new PwAutoData($moduleid);
  251. $srv->addAutoData();
  252. }
  253. //多模块不允许更新
  254. $this->showMessage("operate.success");
  255. }
  256. public function batchdeleteAction() {
  257. $pushids = $this->getInput('pushids','post');
  258. if ($this->_getPushDs()->batchDelete($pushids)) $this->showMessage("operate.success");
  259. $this->showMessage("operate.fail");
  260. }
  261. private function _getPushService() {
  262. return Wekit::load('design.srv.PwPushService');
  263. }
  264. private function _getPushDs() {
  265. return Wekit::load('design.PwDesignPush');
  266. }
  267. private function _getDataDs() {
  268. return Wekit::load('design.PwDesignData');
  269. }
  270. private function _getPageDs() {
  271. return Wekit::load('design.PwDesignPage');
  272. }
  273. private function _getModuleDs() {
  274. return Wekit::load('design.PwDesignModule');
  275. }
  276. private function _getShieldDs() {
  277. return Wekit::load('design.PwDesignShield');
  278. }
  279. }