publish.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <?php
  2. /**
  3. * cms发布
  4. *
  5. *
  6. ***/
  7. defined('InShopNC') or exit('Access Invalid!');
  8. class publishControl extends CMSMemberControl{
  9. public function __construct() {
  10. parent::__construct();
  11. }
  12. public function indexOp() {
  13. $this->publish_articleOp();
  14. }
  15. /**
  16. * 文章发布
  17. */
  18. public function publish_articleOp(){
  19. $model_article_class = Model('cms_article_class');
  20. $article_class_list = $model_article_class->getList(TRUE, null, 'class_sort asc');
  21. Tpl::output('article_class_list', $article_class_list);
  22. $model_tag = Model('cms_tag');
  23. $tag_list = $model_tag->getList(TRUE, null, 'tag_sort asc');
  24. Tpl::output('tag_list', $tag_list);
  25. Tpl::showpage('publish_article','cms_member_layout');
  26. }
  27. /**
  28. * 文章发布
  29. */
  30. public function publish_article_saveOp(){
  31. if(empty($_POST['article_title'])) {
  32. showMessage(Language::get('article_title_null'),'','','error');
  33. }
  34. //插入文章
  35. $param = array();
  36. $param['article_title'] = trim($_POST['article_title']);
  37. if(empty($_POST['article_title_short'])) {
  38. $param['article_title_short'] = mb_substr($_POST['article_title'], 0, 12, CHARSET);
  39. } else {
  40. $param['article_title_short'] = $_POST['article_title_short'];
  41. }
  42. $param['article_class_id'] = intval($_POST['article_class']);
  43. $param['article_origin'] = trim($_POST['article_origin']);
  44. $param['article_origin_address'] = trim($_POST['article_origin_address']);
  45. $param['article_author'] = trim($_POST['article_author']);
  46. $param['article_abstract'] = mb_substr(trim($_POST['article_abstract']), 0, 140, CHARSET);
  47. $param['article_content'] = trim($_POST['article_content']);
  48. $param['article_link'] = trim($_POST['article_link']);
  49. $param['article_keyword'] = trim($_POST['article_keyword']);
  50. if(empty($_POST['article_id'])) {
  51. $param['article_publisher_name'] = $this->publisher_name;
  52. $param['article_publisher_id'] = $this->publisher_id;
  53. $param['article_type'] = $this->publisher_type;
  54. $param['article_attachment_path'] = $this->attachment_path;
  55. $param['article_sort'] = 255;
  56. }
  57. $param['article_commend_flag'] = 0;
  58. $param['article_tag'] = trim($_POST['article_tag']);
  59. //文章图片
  60. if(!empty($_POST['article_image_all'])) {
  61. $article_image_all = array();
  62. foreach ($_POST['article_image_all'] as $value) {
  63. list($file_name, $file_path) = explode(',', $value);
  64. $file_path = empty($file_path)?$this->attachment_path:$file_path;
  65. $article_image_url = getCMSArticleImageUrl($file_path, $file_name, 'max');
  66. list($width, $height, $type, $attr) = getimagesize($article_image_url);
  67. $article_image_all[$file_name]['name'] = $file_name;
  68. $article_image_all[$file_name]['width'] = $width;
  69. $article_image_all[$file_name]['height'] = $height;
  70. $article_image_all[$file_name]['path'] = $file_path;
  71. }
  72. $param['article_image_all'] = serialize($article_image_all);
  73. }
  74. if(!empty($_POST['article_image'])) {
  75. $param['article_image'] = serialize($article_image_all[$_POST['article_image']]);
  76. }
  77. //文章商品
  78. if(!empty($_POST['article_goods_url'])) {
  79. $article_goods_list = array();
  80. for ($i = 0,$count = count($_POST['article_goods_url']); $i < $count; $i++) {
  81. $article_goods = array();
  82. $article_goods['url'] = $_POST['article_goods_url'][$i];
  83. $article_goods['title'] = $_POST['article_goods_title'][$i];
  84. $article_goods['image'] = $_POST['article_goods_image'][$i];
  85. $article_goods['price'] = $_POST['article_goods_price'][$i];
  86. $article_goods['type'] = $_POST['article_goods_type'][$i];
  87. $article_goods_list[] = $article_goods;
  88. }
  89. if(!empty($article_goods_list)) {
  90. $param['article_goods'] = serialize($article_goods_list);
  91. } else {
  92. $param['article_goods'] = '';
  93. }
  94. }
  95. //发布时间
  96. if(!empty($_POST['article_publish_time'])) {
  97. $param['article_publish_time'] = strtotime($_POST['article_publish_time']);
  98. } else {
  99. $param['article_publish_time'] = time();
  100. }
  101. $param['article_modify_time'] = time();
  102. if($_POST['save_type'] == 'publish') {
  103. $param['article_state'] = $this->publish_state;
  104. } else {
  105. $param['article_state'] = self::ARTICLE_STATE_DRAFT;
  106. }
  107. $model_article = Model('cms_article');
  108. $model_tag_relation = Model('cms_tag_relation');
  109. if(!empty($_POST['article_id'])) {
  110. $article_id = intval($_POST['article_id']);
  111. $article_auth = $this->check_article_auth($article_id);
  112. if($article_auth) {
  113. $model_article->modify($param,array('article_id'=>$article_id));
  114. $model_tag_relation->drop(array('relation_type'=>1,'relation_object_id'=>$article_id));
  115. } else {
  116. showMessage(Language::get('wrong_argument'),'','','error');
  117. }
  118. } else {
  119. $article_id = $model_article->save($param);
  120. }
  121. //插入文章标签
  122. if(!empty($_POST['article_tag'])) {
  123. $tag_list = explode(',', $_POST['article_tag']);
  124. $param = array();
  125. $param['relation_type'] = 1;
  126. $param['relation_object_id'] = $article_id;
  127. $params = array();
  128. foreach ($tag_list as $value) {
  129. $param['relation_tag_id'] = $value;
  130. $params[] = $param;
  131. }
  132. $model_tag_relation->saveAll($params);
  133. }
  134. if($article_id) {
  135. showMessage(Language::get('nc_common_save_succ'),self::CMS_MEMBER_ARTICLE_URL);
  136. } else {
  137. showMessage(Language::get('nc_common_save_fail'),self::CMS_MEMBER_ARTICLE_URL,'','error');
  138. }
  139. }
  140. /**
  141. * 画报发布
  142. */
  143. public function publish_pictureOp(){
  144. $model_picture_class = Model('cms_picture_class');
  145. $picture_class_list = $model_picture_class->getList(TRUE, null, 'class_sort asc');
  146. Tpl::output('picture_class_list', $picture_class_list);
  147. $model_tag = Model('cms_tag');
  148. $tag_list = $model_tag->getList(TRUE, null, 'tag_sort asc');
  149. Tpl::output('tag_list', $tag_list);
  150. Tpl::showpage('publish_picture','cms_member_layout');
  151. }
  152. /**
  153. * 画报保存
  154. */
  155. public function publish_picture_saveOp() {
  156. if(empty($_POST['picture_title'])) {
  157. showMessage(Language::get('article_title_null'),'','','error');
  158. }
  159. //插入文章
  160. $param = array();
  161. $param['picture_title'] = trim($_POST['picture_title']);
  162. if(empty($_POST['picture_title_short'])) {
  163. $param['picture_title_short'] = mb_substr($_POST['picture_title'], 0 ,12, CHARSET);
  164. } else {
  165. $param['picture_title_short'] = $_POST['picture_title_short'];
  166. }
  167. $param['picture_class_id'] = intval($_POST['picture_class']);
  168. $param['picture_author'] = trim($_POST['picture_author']);
  169. $param['picture_abstract'] = mb_substr(trim($_POST['picture_abstract']), 0, 140, CHARSET);
  170. $param['picture_keyword'] = trim($_POST['picture_keyword']);
  171. if(empty($_POST['picture_id'])) {
  172. $param['picture_publisher_name'] = $this->publisher_name;
  173. $param['picture_publisher_id'] = $this->publisher_id;
  174. $param['picture_type'] = $this->publisher_type;
  175. $param['picture_attachment_path'] = $this->attachment_path;
  176. $param['picture_sort'] = 255;
  177. }
  178. $param['picture_commend_flag'] = 0;
  179. $param['picture_tag'] = trim($_POST['picture_tag']);
  180. if(!empty($_POST['picture_publish_time'])) {
  181. $param['picture_publish_time'] = strtotime($_POST['picture_publish_time']);
  182. } else {
  183. $param['picture_publish_time'] = time();
  184. }
  185. $param['picture_modify_time'] = time();
  186. if($_POST['save_type'] == 'publish') {
  187. $param['picture_state'] = $this->publish_state;
  188. } else {
  189. $param['picture_state'] = self::ARTICLE_STATE_DRAFT;
  190. }
  191. $image_count = count($_POST['picture_image_all']);
  192. $param['picture_image_count'] = $image_count;
  193. $model_picture = Model('cms_picture');
  194. $model_tag_relation = Model('cms_tag_relation');
  195. $model_picture_image = Model('cms_picture_image');
  196. if(!empty($_POST['picture_image_all'])) {
  197. $picture_image_all = array();
  198. $picture_image_index = 0;
  199. for ($i = 0; $i < $image_count; $i++) {
  200. $picture_image = array();
  201. list($file_name, $file_path) = explode(',', $_POST['picture_image_all'][$i]);
  202. $file_path = empty($file_path)?$this->attachment_path:$file_path;
  203. $picture_image_url = getCMSArticleImageUrl($file_path, $file_name, 'max');
  204. list($width, $height, $type, $attr) = getimagesize($picture_image_url);
  205. $picture_image['image_name'] = $file_name;
  206. $picture_image['image_width'] = $width;
  207. $picture_image['image_height'] = $height;
  208. $picture_image['image_path'] = $file_path;
  209. $picture_image['image_abstract'] = $_POST['picture_image_abstract'][$i];
  210. $picture_image['image_goods'] = '';
  211. if(isset($_POST['image_goods_url'][$picture_image['image_name']])) {
  212. $image_goods_list = array();
  213. for ($j = 0,$j_count = count($_POST['image_goods_url'][$picture_image['image_name']]); $j < $j_count; $j++) {
  214. $image_goods = array();
  215. $image_goods['url'] = $_POST['image_goods_url'][$picture_image['image_name']][$j];
  216. $image_goods['image'] = $_POST['image_goods_image'][$picture_image['image_name']][$j];
  217. $image_goods['price'] = $_POST['image_goods_price'][$picture_image['image_name']][$j];
  218. $image_goods['title'] = $_POST['image_goods_title'][$picture_image['image_name']][$j];
  219. $image_goods_list[] = $image_goods;
  220. }
  221. $picture_image['image_goods'] = serialize($image_goods_list);;
  222. }
  223. $picture_image_all[] = $picture_image;
  224. if($file_name == $_POST['picture_image']) {
  225. $picture_image_index = $i;
  226. }
  227. }
  228. //设置封面图
  229. $picture_image = array();
  230. $picture_image['name'] = $picture_image_all[$picture_image_index]['image_name'];
  231. $picture_image['width'] = $picture_image_all[$picture_image_index]['image_width'];
  232. $picture_image['height'] = $picture_image_all[$picture_image_index]['image_height'];
  233. $picture_image['path'] = $picture_image_all[$picture_image_index]['image_path'];
  234. $param['picture_image'] = serialize($picture_image) ;
  235. }
  236. if(!empty($_POST['picture_id'])) {
  237. $picture_id = intval($_POST['picture_id']);
  238. $picture_auth = $this->check_picture_auth($picture_id);
  239. if($picture_auth) {
  240. //删除原画报图片
  241. $model_picture_image->drop(array('image_picture_id'=>$picture_id));
  242. $model_picture->modify($param,array('picture_id'=>$picture_id));
  243. $model_tag_relation->drop(array('relation_type'=>2,'relation_object_id'=>$picture_id));
  244. } else {
  245. showMessage(Language::get('wrong_argument'),'','','error');
  246. }
  247. } else {
  248. $picture_id = $model_picture->save($param);
  249. }
  250. for($i = 0,$length = count($picture_image_all); $i < $length; $i++) {
  251. $picture_image_all[$i]['image_picture_id'] = $picture_id;
  252. }
  253. $model_picture_image->saveAll($picture_image_all);
  254. //插入文章标签
  255. if(!empty($_POST['picture_tag'])) {
  256. $tag_list = explode(',', $_POST['picture_tag']);
  257. $param = array();
  258. $param['relation_type'] = 2;
  259. $param['relation_object_id'] = $picture_id;
  260. $params = array();
  261. foreach ($tag_list as $value) {
  262. $param['relation_tag_id'] = $value;
  263. $params[] = $param;
  264. }
  265. $model_tag_relation->saveAll($params);
  266. }
  267. if($picture_id) {
  268. showMessage(Language::get('nc_common_save_succ'),self::CMS_MEMBER_PICTURE_URL);
  269. } else {
  270. showMessage(Language::get('nc_common_save_fail'),self::CMS_MEMBER_PICTURE_URL,'','error');
  271. }
  272. }
  273. /**
  274. * 文章图片上传
  275. */
  276. public function article_image_uploadOp() {
  277. $data = array();
  278. $data['status'] = 'success';
  279. if(!empty($this->publisher_name)) {
  280. if(!empty($_FILES['article_image_upload']['name'])) {
  281. $upload = new UploadFile();
  282. $upload->set('default_dir',ATTACH_CMS.DS.'article'.DS.$this->attachment_path);
  283. $upload->set('thumb_width','1024,240');
  284. $upload->set('thumb_height', '50000,5000');
  285. $upload->set('thumb_ext', '_max,_list');
  286. $result = $upload->upfile('article_image_upload');
  287. if(!$result) {
  288. $data['status'] = 'fail';
  289. $data['error'] = '图片上传失败';
  290. }
  291. $data['file_name'] = $upload->file_name;
  292. $data['origin_file_name'] = $_FILES['article_image_upload']['name'];
  293. $data['file_url'] = getCMSArticleImageUrl($this->attachment_path, $upload->file_name, 'max');
  294. $data['file_path'] = $this->attachment_path;
  295. }
  296. } else {
  297. $data['status'] = 'fail';
  298. $data['error'] = Language::get('no_login');
  299. }
  300. self::echo_json($data);
  301. }
  302. /**
  303. * 文章图片删除
  304. */
  305. public function article_image_dropOp() {
  306. $data = array();
  307. $data['status'] = 'success';
  308. $image_name = $_GET['image_name'];
  309. list($name, $ext) = explode(".", $image_name);
  310. $name = str_replace('/', '', $name);
  311. $name = str_replace('.', '', $name);
  312. $image = $name.'.'.$ext;
  313. $image_list = $name.'_list.'.$ext;
  314. $image_max = $name.'_max.'.$ext;
  315. self::drop_image('article'.DS.$this->attachment_path, $image);
  316. self::drop_image('article'.DS.$this->attachment_path, $image_list);
  317. self::drop_image('article'.DS.$this->attachment_path, $image_max);
  318. self::echo_json($data);
  319. }
  320. }