position.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('admin','admin',0);
  4. pc_base::load_sys_class('form', '', 0);
  5. class position extends admin {
  6. private $db, $db_data, $db_content;
  7. function __construct() {
  8. parent::__construct();
  9. $this->db = pc_base::load_model('position_model');
  10. $this->db_data = pc_base::load_model('position_data_model');
  11. $this->db_content = pc_base::load_model('content_model');
  12. $this->sites = pc_base::load_app_class('sites');
  13. }
  14. public function init() {
  15. $infos = array();
  16. $where = '';
  17. $current_siteid = self::get_siteid();
  18. $category = getcache('category_content_'.$current_siteid,'commons');
  19. $model = getcache('model','commons');
  20. $where = "`siteid`='$current_siteid' OR `siteid`='0'";
  21. $page = $_GET['page'] ? $_GET['page'] : '1';
  22. $infos = $this->db->listinfo($where, $order = 'listorder DESC,posid DESC', $page, $pagesize = 20);
  23. $pages = $this->db->pages;
  24. $show_dialog = true;
  25. $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=position&a=add\', title:\''.L('posid_add').'\', width:\'500\', height:\'360\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('posid_add'));
  26. include $this->admin_tpl('position_list');
  27. }
  28. /**
  29. * 推荐位添加
  30. */
  31. public function add() {
  32. if(isset($_POST['dosubmit'])) {
  33. if(!is_array($_POST['info']) || empty($_POST['info']['name'])){
  34. showmessage(L('operation_failure'));
  35. }
  36. $_POST['info']['siteid'] = intval($_POST['info']['modelid']) ? get_siteid() : 0;
  37. $_POST['info']['listorder'] = intval($_POST['info']['listorder']);
  38. $_POST['info']['maxnum'] = intval($_POST['info']['maxnum']);
  39. $_POST['info']['thumb'] = $_POST['info']['thumb'];
  40. $insert_id = $this->db->insert($_POST['info'],true);
  41. $this->_set_cache();
  42. if($insert_id){
  43. showmessage(L('operation_success'), '', '', 'add');
  44. }
  45. } else {
  46. pc_base::load_sys_class('form');
  47. $this->sitemodel_db = pc_base::load_model('sitemodel_model');
  48. $sitemodel = $sitemodel = array();
  49. $sitemodel = getcache('model','commons');
  50. foreach($sitemodel as $value){
  51. if($value['siteid'] == get_siteid())$modelinfo[$value['modelid']]=$value['name'];
  52. }
  53. $show_header = $show_validator = true;
  54. include $this->admin_tpl('position_add');
  55. }
  56. }
  57. /**
  58. * 推荐位编辑
  59. */
  60. public function edit() {
  61. if(isset($_POST['dosubmit'])) {
  62. $_POST['posid'] = intval($_POST['posid']);
  63. if(!is_array($_POST['info']) || empty($_POST['info']['name'])){
  64. showmessage(L('operation_failure'));
  65. }
  66. $_POST['info']['siteid'] = intval($_POST['info']['modelid']) ? get_siteid() : 0;
  67. $_POST['info']['listorder'] = intval($_POST['info']['listorder']);
  68. $_POST['info']['maxnum'] = intval($_POST['info']['maxnum']);
  69. $_POST['info']['thumb'] = $_POST['info']['thumb'];
  70. $this->db->update($_POST['info'],array('posid'=>$_POST['posid']));
  71. $this->_set_cache();
  72. showmessage(L('operation_success'), '', '', 'edit');
  73. } else {
  74. $info = $this->db->get_one(array('posid'=>intval($_GET['posid'])));
  75. extract($info);
  76. pc_base::load_sys_class('form');
  77. $this->sitemodel_db = pc_base::load_model('sitemodel_model');
  78. $sitemodel = $sitemodel = array();
  79. $sitemodel = getcache('model','commons');
  80. foreach($sitemodel as $value){
  81. if($value['siteid'] == get_siteid())$modelinfo[$value['modelid']]=$value['name'];
  82. }
  83. $show_validator = $show_header = $show_scroll = true;
  84. include $this->admin_tpl('position_edit');
  85. }
  86. }
  87. /**
  88. * 推荐位删除
  89. */
  90. public function delete() {
  91. $posid = intval($_GET['posid']);
  92. $this->db->delete(array('posid'=>$posid));
  93. $this->_set_cache();
  94. showmessage(L('posid_del_success'),'?m=admin&c=position');
  95. }
  96. /**
  97. * 推荐位排序
  98. */
  99. public function listorder() {
  100. if(isset($_POST['dosubmit'])) {
  101. foreach($_POST['listorders'] as $posid => $listorder) {
  102. $this->db->update(array('listorder'=>$listorder),array('posid'=>$posid));
  103. }
  104. $this->_set_cache();
  105. showmessage(L('operation_success'),'?m=admin&c=position');
  106. } else {
  107. showmessage(L('operation_failure'),'?m=admin&c=position');
  108. }
  109. }
  110. /**
  111. * 推荐位文章统计
  112. * @param $posid 推荐位ID
  113. */
  114. public function content_count($posid) {
  115. $posid = intval($posid);
  116. $where = array('posid'=>$posid);
  117. $infos = $this->db_data->get_one($where, $data = 'count(*) as count');
  118. return $infos['count'];
  119. }
  120. /**
  121. * 推荐位文章列表
  122. */
  123. public function public_item() {
  124. if(isset($_POST['dosubmit'])) {
  125. $items = count($_POST['items']) > 0 ? $_POST['items'] : showmessage(L('posid_select_to_remove'),HTTP_REFERER);
  126. if(is_array($items)) {
  127. $sql = array();
  128. foreach ($items as $item) {
  129. $_v = explode('-', $item);
  130. $sql['id'] = $_v[0];
  131. $sql['modelid']= $_v[1];
  132. $sql['posid'] = intval($_POST['posid']);
  133. $this->db_data->delete($sql);
  134. $this->content_pos($sql['id'],$sql['modelid']);
  135. }
  136. }
  137. showmessage(L('operation_success'),HTTP_REFERER);
  138. } else {
  139. $posid = intval($_GET['posid']);
  140. $MODEL = getcache('model','commons');
  141. $siteid = $this->get_siteid();
  142. $CATEGORY = getcache('category_content_'.$siteid,'commons');
  143. $page = $_GET['page'] ? $_GET['page'] : '1';
  144. $pos_arr = $this->db_data->listinfo(array('posid'=>$posid,'siteid'=>$siteid),'listorder DESC', $page, $pagesize = 20);
  145. $pages = $this->db_data->pages;
  146. $infos = array();
  147. foreach ($pos_arr as $_k => $_v) {
  148. $r = string2array($_v['data']);
  149. $r['catname'] = $CATEGORY[$_v['catid']]['catname'];
  150. $r['modelid'] = $_v['modelid'];
  151. $r['posid'] = $_v['posid'];
  152. $r['id'] = $_v['id'];
  153. $r['listorder'] = $_v['listorder'];
  154. $r['catid'] = $_v['catid'];
  155. $r['url'] = go($_v['catid'], $_v['id']);
  156. $key = $r['modelid'].'-'.$r['id'];
  157. $infos[$key] = $r;
  158. }
  159. $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=position&a=add\', title:\''.L('posid_add').'\', width:\'500\', height:\'300\', lock:true}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('posid_add'));
  160. include $this->admin_tpl('position_items');
  161. }
  162. }
  163. /**
  164. * 推荐位文章管理
  165. */
  166. public function public_item_manage() {
  167. if(isset($_POST['dosubmit'])) {
  168. $posid = intval($_POST['posid']);
  169. $modelid = intval($_POST['modelid']);
  170. $id= intval($_POST['id']);
  171. $pos_arr = $this->db_data->get_one(array('id'=>$id,'posid'=>$posid,'modelid'=>$modelid));
  172. $array = string2array($pos_arr['data']);
  173. $array['inputtime'] = strtotime($_POST['info']['inputtime']);
  174. $array['title'] = trim($_POST['info']['title']);
  175. $array['thumb'] = trim($_POST['info']['thumb']);
  176. $array['description'] = trim($_POST['info']['description']);
  177. $thumb = $_POST['info']['thumb'] ? 1 : 0;
  178. $array = array('data'=>array2string($array),'synedit'=>intval($_POST['synedit']),'thumb'=>$thumb);
  179. $this->db_data->update($array,array('id'=>$id,'posid'=>$posid,'modelid'=>$modelid));
  180. showmessage(L('operation_success'),'','','edit');
  181. } else {
  182. $posid = intval($_GET['posid']);
  183. $modelid = intval($_GET['modelid']);
  184. $id = intval($_GET['id']);
  185. if($posid == 0 || $modelid == 0) showmessage(L('linkage_parameter_error'), HTTP_REFERER);
  186. $pos_arr = $this->db_data->get_one(array('id'=>$id,'posid'=>$posid,'modelid'=>$modelid));
  187. extract(string2array($pos_arr['data']));
  188. $synedit = $pos_arr['synedit'];
  189. $show_validator = true;
  190. $show_header = true;
  191. include $this->admin_tpl('position_item_manage');
  192. }
  193. }
  194. /**
  195. * 推荐位文章排序
  196. */
  197. public function public_item_listorder() {
  198. if(isset($_POST['posid'])) {
  199. foreach($_POST['listorders'] as $_k => $listorder) {
  200. $pos = array();
  201. $pos = explode('-', $_k);
  202. $this->db_data->update(array('listorder'=>$listorder),array('id'=>$pos[1],'catid'=>$pos[0],'posid'=>$_POST['posid']));
  203. }
  204. showmessage(L('operation_success'),HTTP_REFERER);
  205. } else {
  206. showmessage(L('operation_failure'),HTTP_REFERER);
  207. }
  208. }
  209. /**
  210. * 推荐位添加栏目加载
  211. */
  212. public function public_category_load() {
  213. $modelid = intval($_GET['modelid']);
  214. pc_base::load_sys_class('form');
  215. $category = form::select_category('','','name="info[catid]"',L('please_select_parent_category'),$modelid);
  216. echo $category;
  217. }
  218. private function _set_cache() {
  219. $infos = $this->db->select('','*',1000,'listorder DESC');
  220. $positions = array();
  221. foreach ($infos as $info){
  222. $positions[$info['posid']] = $info;
  223. }
  224. setcache('position', $positions,'commons');
  225. return $infos;
  226. }
  227. private function content_pos($id,$modelid) {
  228. $id = intval($id);
  229. $modelid = intval($modelid);
  230. $MODEL = getcache('model','commons');
  231. $this->db_content->table_name = $this->db_content->db_tablepre.$MODEL[$modelid]['tablename'];
  232. $posids = $this->db_data->get_one(array('id'=>$id,'modelid'=>$modelid)) ? 1 : 0;
  233. return $this->db_content->update(array('posids'=>$posids),array('id'=>$id));
  234. }
  235. public function preview(){
  236. $thumb = $_GET['thumb'];
  237. include $this->admin_tpl('position_priview');
  238. }
  239. }
  240. ?>