cms_special.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <?php
  2. /**
  3. * cms文章专题
  4. *
  5. *
  6. *
  7. *
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. class cms_specialControl extends SystemControl{
  11. const LINK_CMS_SPECIAL = 'index.php?act=cms_special&op=cms_special_list';
  12. //专题状态草稿箱
  13. const SPECIAL_STATE_DRAFT = 1;
  14. //专题状态待审核
  15. const SPECIAL_STATE_PUBLISHED = 2;
  16. public function __construct(){
  17. parent::__construct();
  18. Language::read('cms');
  19. }
  20. public function indexOp() {
  21. $this->cms_special_listOp();
  22. }
  23. /**
  24. * cms专题列表
  25. **/
  26. public function cms_special_listOp() {
  27. $model_special = Model('cms_special');
  28. $condition = array();
  29. $special_list = $model_special->getList($condition, 10, 'special_id desc');
  30. Tpl::output('show_page',$model_special->showpage(2));
  31. Tpl::output('list',$special_list);
  32. $this->show_menu('special_list');
  33. Tpl::output('special_state_list', $this->get_special_state_list());
  34. Tpl::showpage("cms_special.list");
  35. }
  36. /**
  37. * cms专题添加
  38. **/
  39. public function cms_special_addOp() {
  40. $model_special = Model('cms_special');
  41. $this->show_menu('special_add');
  42. Tpl::output('special_type_array', $model_special->getSpecialTypeArray());
  43. Tpl::showpage('cms_special.add');
  44. }
  45. /**
  46. * cms专题编辑
  47. */
  48. public function cms_special_editOp() {
  49. $special_id = intval($_GET['special_id']);
  50. if(empty($special_id)) {
  51. showMessage(Language::get('param_error'),'','','error');
  52. }
  53. $model_special = Model('cms_special');
  54. $special_detail = $model_special->getOne(array('special_id'=>$special_id));
  55. if(empty($special_detail)) {
  56. showMessage(Language::get('param_error'),'','','error');
  57. }
  58. Tpl::output('special_detail', $special_detail);
  59. Tpl::output('special_type_array', $model_special->getSpecialTypeArray());
  60. $this->show_menu('special_edit');
  61. Tpl::showpage('cms_special.add');
  62. }
  63. /**
  64. * cms专题保存
  65. **/
  66. public function cms_special_saveOp() {
  67. $param = array();
  68. $param['special_title'] = $_POST['special_title'];
  69. $special_image = $this->cms_special_image_upload('special_image');
  70. if(!empty($special_image)) {
  71. $param['special_image'] = $special_image;
  72. if(!empty($_POST['old_special_image'])) {
  73. $this->cms_special_image_drop($_POST['old_special_image']);
  74. }
  75. }
  76. $special_background = $this->cms_special_image_upload('special_background');
  77. if(!empty($special_background)) {
  78. $param['special_background'] = $special_background;
  79. if(!empty($_POST['old_special_background'])) {
  80. $this->cms_special_image_drop($_POST['old_special_background']);
  81. }
  82. }
  83. if(!empty($_POST['special_image_all'])) {
  84. $special_image_all = array();
  85. foreach ($_POST['special_image_all'] as $value) {
  86. $image = array();
  87. $image['image_name'] = $value;
  88. $special_image_all[] = $image;
  89. }
  90. $param['special_image_all'] = serialize($special_image_all);
  91. } else {
  92. $param['special_image_all'] = '';
  93. }
  94. $param['special_margin_top'] = intval($_POST['special_margin_top']);
  95. $param['special_content'] = $_POST['special_content'];
  96. $param['special_background_color'] = empty($_POST['special_background_color'])?'#FFFFFF':$_POST['special_background_color'];
  97. $param['special_repeat'] = empty($_POST['special_repeat'])?'no-repeat':$_POST['special_repeat'];
  98. $param['special_modify_time'] = time();
  99. $param['special_type'] = intval($_POST['special_type']);
  100. $admin_info = $this->getAdminInfo();
  101. $param['special_publish_id'] = $admin_info['id'];
  102. if($_POST['special_state'] == 'publish') {
  103. $param['special_state'] = 2;
  104. } else {
  105. $param['special_state'] = 1;
  106. }
  107. $model_special = Model('cms_special');
  108. if(empty($_POST['special_id'])) {
  109. $result = $model_special->save($param);
  110. } else {
  111. $model_special->modify($param, array('special_id'=>$_POST['special_id']));
  112. $result = $_POST['special_id'];
  113. }
  114. if($result) {
  115. if($_POST['special_state'] == 'publish') {
  116. $this->generate_html($result);
  117. }
  118. $this->log(Language::get('cms_log_special_save').$result, 1);
  119. showMessage(Language::get('nc_common_save_succ'), self::LINK_CMS_SPECIAL);
  120. } else {
  121. $this->log(Language::get('cms_log_special_save').$result, 0);
  122. showMessage(Language::get('nc_common_save_fail'), self::LINK_CMS_SPECIAL);
  123. }
  124. }
  125. /**
  126. * 专题详细页
  127. */
  128. public function cms_special_detailOp() {
  129. $this->get_cms_special_detail($_GET['special_id']);
  130. }
  131. private function get_cms_special_detail($special_id) {
  132. $model_special = Model('cms_special');
  133. $special_detail = $model_special->getOne(array('special_id'=>$special_id));
  134. Tpl::output('special_detail', $special_detail);
  135. Tpl::showpage('cms_special.detail', 'null_layout');
  136. }
  137. /**
  138. * cms生成静态文件
  139. */
  140. private function generate_html($special_id) {
  141. $html_path = BASE_UPLOAD_PATH.DS.ATTACH_CMS.DS.'special_html'.DS;
  142. if(!is_dir($html_path)){
  143. if (!@mkdir($html_path, 0755)){
  144. showMessage(Language::get('cms_special_build_fail'),'','','error');
  145. }
  146. }
  147. ob_start();
  148. $this->get_cms_special_detail($special_id);
  149. $result = file_put_contents($html_path.md5('special'.$special_id).'.html', ob_get_clean());
  150. if(!$result) {
  151. showMessage(Language::get('cms_special_build_fail'),'','','error');
  152. }
  153. }
  154. /**
  155. * cms专题删除
  156. */
  157. public function cms_special_dropOp() {
  158. $condition = array();
  159. $condition['special_id'] = array('in', $_POST['special_id']);
  160. $model_special = Model('cms_special');
  161. $special_list = $model_special->getList($condition);
  162. if(!empty($special_list)) {
  163. $html_path = BASE_UPLOAD_PATH.DS.ATTACH_CMS.DS.'special_html'.DS;
  164. foreach ($special_list as $value) {
  165. //删除图片
  166. $this->cms_special_image_drop($value['special_background']);
  167. $this->cms_special_image_drop($value['special_image']);
  168. $special_image_list = unserialize($value['special_image_all']);
  169. if(!empty($special_image_list)) {
  170. foreach ($special_image_list as $value_image) {
  171. $this->cms_special_image_drop($value_image['image_name']);
  172. }
  173. }
  174. //删除静态文件
  175. $static_file = $html_path.md5('special'.$value['special_id']).'.html';
  176. if(is_file($static_file)) {
  177. unlink($static_file);
  178. }
  179. }
  180. }
  181. $result = $model_special->drop($condition);
  182. if($result) {
  183. $this->log(Language::get('cms_log_special_drop').$_POST['special_id'], 1);
  184. showMessage(Language::get('nc_common_del_succ'),'');
  185. } else {
  186. $this->log(Language::get('cms_log_special_drop').$_POST['special_id'], 0);
  187. showMessage(Language::get('nc_common_del_fail'),'');
  188. }
  189. }
  190. /**
  191. * 上传图片
  192. */
  193. private function cms_special_image_upload($image) {
  194. if(!empty($_FILES[$image]['name'])) {
  195. $upload = new UploadFile();
  196. $upload->set('default_dir',ATTACH_CMS.DS.'special');
  197. $result = $upload->upfile($image);
  198. if(!$result) {
  199. showMessage($upload->error);
  200. }
  201. return $upload->file_name;
  202. }
  203. }
  204. /**
  205. * 图片删除
  206. */
  207. private function cms_special_image_drop($image) {
  208. $file = getCMSSpecialImagePath($image);
  209. if(is_file($file)) {
  210. unlink($file);
  211. }
  212. }
  213. /**
  214. * 专题图片上传
  215. */
  216. public function special_image_uploadOp() {
  217. $data = array();
  218. $data['status'] = 'success';
  219. if(!empty($_FILES['special_image_upload']['name'])) {
  220. $upload = new UploadFile();
  221. $upload->set('default_dir',ATTACH_CMS.DS.'special');
  222. $result = $upload->upfile('special_image_upload');
  223. if(!$result) {
  224. $data['status'] = 'fail';
  225. $data['error'] = $upload->error;
  226. }
  227. $data['file_name'] = $upload->file_name;
  228. $data['origin_file_name'] = $_FILES['special_image_upload']['name'];
  229. $data['file_url'] = getCMSSpecialImageUrl($upload->file_name);
  230. }
  231. if (strtoupper(CHARSET) == 'GBK'){
  232. $data = Language::getUTF8($data);//网站GBK使用编码时,转换为UTF-8,防止json输出汉字问题
  233. }
  234. echo json_encode($data);
  235. }
  236. /**
  237. * 专题图片删除
  238. */
  239. public function special_image_dropOp() {
  240. $data = array();
  241. $data['status'] = 'success';
  242. $this->cms_special_image_drop($_GET['image_name']);
  243. echo json_encode($data);
  244. }
  245. /**
  246. * 图片商品添加
  247. */
  248. public function goods_info_by_urlOp() {
  249. $url = urldecode($_GET['url']);
  250. if(empty($url)) {
  251. self::return_json(Language::get('param_error'),'false');
  252. }
  253. $model_goods_info = Model('goods_info_by_url');
  254. $result = $model_goods_info->get_goods_info_by_url($url);
  255. if($result) {
  256. self::echo_json($result);
  257. } else {
  258. self::return_json(Language::get('param_error'),'false');
  259. }
  260. }
  261. /**
  262. * 获取专题状态列表
  263. */
  264. private function get_special_state_list() {
  265. $array = array();
  266. $array[self::SPECIAL_STATE_DRAFT] = Language::get('cms_text_draft');
  267. $array[self::SPECIAL_STATE_PUBLISHED] = Language::get('cms_text_published');
  268. return $array;
  269. }
  270. private function return_json($message,$result='true') {
  271. $data = array();
  272. $data['result'] = $result;
  273. $data['message'] = $message;
  274. self::echo_json($data);
  275. }
  276. private function echo_json($data) {
  277. if (strtoupper(CHARSET) == 'GBK'){
  278. $data = Language::getUTF8($data);//网站GBK使用编码时,转换为UTF-8,防止json输出汉字问题
  279. }
  280. echo json_encode($data);
  281. }
  282. private function show_menu($menu_key) {
  283. $menu_array = array(
  284. 'special_list'=>array('menu_type'=>'link','menu_name'=>Language::get('nc_manage'),'menu_url'=>'index.php?act=cms_special&op=cms_special_list'),
  285. 'special_add'=>array('menu_type'=>'link','menu_name'=>Language::get('nc_new'),'menu_url'=>'index.php?act=cms_special&op=cms_special_add'),
  286. 'special_edit'=>array('menu_type'=>'link','menu_name'=>Language::get('nc_edit'),'menu_url'=>'###'),
  287. );
  288. if($menu_key != 'special_edit') {
  289. unset($menu_array['special_edit']);
  290. }
  291. $menu_array[$menu_key]['menu_type'] = 'text';
  292. Tpl::output('menu',$menu_array);
  293. }
  294. }