adv.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. <?php
  2. /**
  3. * 广告管理
  4. *
  5. *
  6. *
  7. ***/
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class advControl extends SystemControl
  10. {
  11. public function __construct(){
  12. parent::__construct();
  13. Language::read('adv');
  14. }
  15. /**
  16. *
  17. * 管理员添加广告
  18. */
  19. public function adv_addOp(){
  20. if(!chksubmit()){
  21. $adv = Model('adv');
  22. /**
  23. * 取广告位信息
  24. */
  25. $ap_list = $adv->getApList();
  26. Tpl::output('ap_list',$ap_list);
  27. Tpl::showpage('adv_add');
  28. }else{
  29. $lang = Language::getLangContent();
  30. $adv = Model('adv');
  31. $upload = new UploadFile();
  32. /**
  33. * 验证
  34. */
  35. $obj_validate = new Validate();
  36. $validate_arr = array();
  37. $validate_arr[] = array("input"=>$_POST["adv_name"], "require"=>"true", "message"=>$lang['adv_can_not_null']);
  38. $validate_arr[] = array("input"=>$_POST["aptype_hidden"], "require"=>"true", "message"=>$lang['must_select_ap']);
  39. $validate_arr[] = array("input"=>$_POST["ap_id"], "require"=>"true", "message"=>$lang['must_select_ap']);
  40. $validate_arr[] = array("input"=>$_POST["adv_start_time"], "require"=>"true", "message"=>$lang['must_select_start_time']);
  41. $validate_arr[] = array("input"=>$_POST["adv_end_time"], "require"=>"true", "message"=>$lang['must_select_end_time']);
  42. if ($_POST["aptype_hidden"] == '1'){
  43. //文字广告
  44. $validate_arr[] = array("input"=>$_POST["adv_word"], "require"=>"true", "message"=>$lang['textadv_null_error']);
  45. }elseif ($_POST["aptype_hidden"] == '3'){
  46. //flash广告
  47. $validate_arr[] = array("input"=>$_FILES['flash_swf']['name'], "require"=>"true", "message"=>$lang['flashadv_null_error']);
  48. }else {
  49. //图片广告
  50. $validate_arr[] = array("input"=>$_FILES['adv_pic']['name'], "require"=>"true", "message"=>$lang['picadv_null_error']);
  51. }
  52. $obj_validate->validateparam = $validate_arr;
  53. $error = $obj_validate->validate();
  54. if ($error != ''){
  55. showMessage($error);
  56. }else {
  57. $insert_array['adv_title'] = trim($_POST['adv_name']);
  58. $insert_array['ap_id'] = intval($_POST['ap_id']);
  59. $insert_array['adv_start_date'] = $this->getunixtime($_POST['adv_start_time']);
  60. $insert_array['adv_end_date'] = $this->getunixtime($_POST['adv_end_time']);
  61. $insert_array['is_allow'] = '1';
  62. /**
  63. * 建立文字广告信息的入库数组
  64. */
  65. //判断页面编码确定汉字所占字节数
  66. switch (CHARSET){
  67. case 'UTF-8':
  68. $charrate = 3;
  69. break;
  70. case 'GBK':
  71. $charrate = 2;
  72. break;
  73. }
  74. //图片广告
  75. if($_POST['aptype_hidden'] == '0'){
  76. $upload->set('default_dir',ATTACH_ADV);
  77. $result = $upload->upfile('adv_pic');
  78. if (!$result){
  79. showMessage($upload->error,'','','error');
  80. }
  81. $ac = array(
  82. 'adv_pic' =>$upload->file_name,
  83. 'adv_pic_url' =>trim($_POST['adv_pic_url'])
  84. );
  85. $ac = serialize($ac);
  86. $insert_array['adv_content'] = $ac;
  87. }
  88. //文字广告
  89. if($_POST['aptype_hidden'] == '1'){
  90. if(strlen($_POST['adv_word'])>($_POST['adv_word_len']*$charrate)){
  91. $error = $lang['wordadv_toolong'];
  92. showMessage($error);die;
  93. }
  94. $ac = array(
  95. 'adv_word' =>trim($_POST['adv_word']),
  96. 'adv_word_url'=>trim($_POST['adv_word_url'])
  97. );
  98. $ac = serialize($ac);
  99. $insert_array['adv_content'] = $ac;
  100. }
  101. //建立Flash广告信息的入库数组
  102. if($_POST['aptype_hidden'] == '3'){
  103. $upload->set('default_dir',ATTACH_ADV);
  104. $upload->upfile('flash_swf');
  105. $ac = array(
  106. 'flash_swf' =>$upload->file_name,
  107. 'flash_url' =>trim($_POST['flash_url'])
  108. );
  109. $ac = serialize($ac);
  110. $insert_array['adv_content'] = $ac;
  111. }
  112. //广告信息入库
  113. $result = $adv->adv_add($insert_array);
  114. //更新相应广告位所拥有的广告数量
  115. $condition['ap_id'] = intval($_POST['ap_id']);
  116. $ap_list = $adv->getApList($condition);
  117. $ap_list = $ap_list['0'];
  118. $adv_num = $ap_list['adv_num'];
  119. $param['ap_id'] = intval($_POST['ap_id']);
  120. $param['adv_num'] = $adv_num+1;
  121. $result2 = $adv->ap_update($param);
  122. if ($result&&$result2){
  123. $this->log(L('adv_add_succ').'['.$_POST["adv_name"].']',null);
  124. showMessage($lang['adv_add_succ'],'index.php?act=adv&op=adv&ap_id='.$_POST['ap_id']);
  125. }else {
  126. showMessage($lang['adv_add_fail']);
  127. }
  128. }
  129. }
  130. }
  131. /**
  132. *
  133. * 管理广告位
  134. */
  135. public function ap_manageOp(){
  136. $lang = Language::getLangContent();
  137. $adv = Model('adv');
  138. /**
  139. * 多选删除广告位
  140. */
  141. if (chksubmit()){
  142. if (!empty($_POST['del_id'])){
  143. $in_array_id=implode(',',$_POST['del_id']);
  144. $where = "where ap_id in (".$in_array_id.")";
  145. Db::delete("adv_position",$where);
  146. foreach ($_POST['del_id'] as $v) {
  147. $adv->delapcache($v);
  148. }
  149. }
  150. $url = array(
  151. array(
  152. 'url'=>trim($_POST['ref_url']),
  153. 'msg'=>$lang['goback_ap_manage'],
  154. )
  155. );
  156. $this->log(L('ap_del_succ').'[ID:'.$in_array_id.']',null);
  157. showMessage($lang['ap_del_succ'],$url);
  158. }
  159. /**
  160. * 显示广告位管理界面
  161. */
  162. $condition = array();
  163. $orderby = '';
  164. if($_GET['search_name'] != ''){
  165. $condition['ap_name'] = trim($_GET['search_name']);
  166. }
  167. /**
  168. * 分页
  169. */
  170. $page = new Page();
  171. $page->setEachNum(25);
  172. $page->setStyle('admin');
  173. $ap_list = $adv->getApList($condition,$page,$orderby);
  174. $adv_list = $adv->getList();
  175. Tpl::output('ap_list',$ap_list);
  176. Tpl::output('adv_list',$adv_list);
  177. Tpl::output('page',$page->show());
  178. Tpl::showpage('ap_manage');
  179. }
  180. /**
  181. * js代码调用
  182. */
  183. public function ap_copyOp(){
  184. Tpl::showpage('ap_copy', 'null_layout');
  185. }
  186. /**
  187. *
  188. * 修改广告位
  189. */
  190. public function ap_editOp(){
  191. if(!chksubmit()){
  192. $adv = Model('adv');
  193. $condition['ap_id'] = intval($_GET['ap_id']);
  194. $ap_list = $adv->getApList($condition);
  195. Tpl::output('ref_url',getReferer());
  196. Tpl::output('ap_list',$ap_list);
  197. Tpl::showpage('ap_edit');
  198. }else{
  199. $lang = Language::getLangContent();
  200. $adv = Model('adv');
  201. $upload = new UploadFile();
  202. $obj_validate = new Validate();
  203. if($_POST['ap_class'] == '1'){
  204. $obj_validate->validateparam = array(
  205. array("input"=>$_POST["ap_name"], "require"=>"true", "message"=>$lang['ap_can_not_null']),
  206. array("input"=>$_POST["ap_width"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_width_must_num']),
  207. );
  208. }else{
  209. $obj_validate->validateparam = array(
  210. array("input"=>$_POST["ap_name"], "require"=>"true", "message"=>$lang['ap_can_not_null']),
  211. array("input"=>$_POST["ap_width"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_width_must_num']),
  212. array("input"=>$_POST["ap_height"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_height_must_num']),
  213. );
  214. }
  215. $error = $obj_validate->validate();
  216. if ($error != ''){
  217. showMessage($error);
  218. }else {
  219. $param['ap_id'] = intval($_GET['ap_id']);
  220. $param['ap_name'] = trim($_POST["ap_name"]);
  221. $param['ap_intro'] = trim($_POST["ap_intro"]);
  222. $param['ap_width'] = intval(trim($_POST["ap_width"]));
  223. $param['ap_height'] = intval(trim($_POST["ap_height"]));
  224. if($_POST["ap_display"] != ''){
  225. $param['ap_display'] = intval($_POST["ap_display"]);
  226. }
  227. if($_POST["is_use"] != ''){
  228. $param['is_use'] = intval($_POST["is_use"]);
  229. }
  230. if($_FILES['default_pic']['name'] != ''){
  231. $upload->set('default_dir',ATTACH_ADV);
  232. $result = $upload->upfile('default_pic');
  233. if (!$result){
  234. showMessage($upload->error,'','','error');
  235. }
  236. $param['default_content'] = $upload->file_name;
  237. }
  238. if($_POST['default_word'] != ''){
  239. $param['default_content'] = trim($_POST['default_word']);
  240. }
  241. $result = $adv->ap_update($param);
  242. if ($result){
  243. $this->log(L('ap_change_succ').'['.$_POST["ap_name"].']',null);
  244. showMessage($lang['ap_change_succ'],$_POST['ref_url']);
  245. }else {
  246. showMessage($lang['ap_change_fail'] ,$url);
  247. }
  248. }
  249. }
  250. }
  251. /**
  252. *
  253. * 新增广告位
  254. */
  255. public function ap_addOp(){
  256. if($_POST['form_submit'] != 'ok'){
  257. Tpl::showpage('ap_add');
  258. }else{
  259. $lang = Language::getLangContent();
  260. $adv = Model('adv');
  261. $upload = new UploadFile();
  262. $obj_validate = new Validate();
  263. if($_POST['ap_class'] == '1'){
  264. $obj_validate->validateparam = array(
  265. array("input"=>$_POST["ap_name"], "require"=>"true", "message"=>$lang['ap_can_not_null']),
  266. array("input"=>$_POST["ap_width_word"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_wordwidth_must_num']),
  267. array("input"=>$_POST["default_word"], "require"=>"true", "message"=>$lang['default_word_can_not_null']),
  268. );
  269. }else{
  270. $obj_validate->validateparam = array(
  271. array("input"=>$_POST["ap_name"], "require"=>"true", "message"=>$lang['ap_can_not_null']),
  272. array("input"=>$_POST["ap_width_media"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_width_must_num']),
  273. array("input"=>$_POST["ap_height"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['ap_height_must_num']),
  274. array("input"=>$_FILES["default_pic"], "require"=>"true", "message"=>$lang['default_pic_can_not_null']),
  275. );
  276. }
  277. $error = $obj_validate->validate();
  278. if ($error != ''){
  279. showMessage($error);
  280. }else {
  281. $insert_array['ap_name'] = trim($_POST['ap_name']);
  282. $insert_array['ap_intro'] = trim($_POST['ap_intro']);
  283. $insert_array['ap_class'] = intval($_POST['ap_class']);
  284. $insert_array['ap_display'] = intval($_POST['ap_display']);
  285. $insert_array['is_use'] = intval($_POST['is_use']);
  286. if($_POST['ap_width_media'] != ''){
  287. $insert_array['ap_width'] = intval(trim($_POST['ap_width_media']));
  288. }
  289. if($_POST['ap_width_word'] != ''){
  290. $insert_array['ap_width'] = intval(trim($_POST['ap_width_word']));
  291. }
  292. if($_POST['default_word'] != ''){
  293. $insert_array['default_content'] = trim($_POST['default_word']);
  294. }
  295. if($_FILES['default_pic']['name'] != ''){
  296. $upload->set('default_dir',ATTACH_ADV);
  297. $result = $upload->upfile('default_pic');
  298. if (!$result){
  299. showMessage($upload->error,'','','error');
  300. }
  301. $insert_array['default_content'] = $upload->file_name;
  302. }
  303. $insert_array['ap_height'] = intval(trim($_POST['ap_height']));
  304. $result = $adv->ap_add($insert_array);
  305. if ($result){
  306. $this->log(L('ap_add_succ').'['.$_POST["ap_name"].']',null);
  307. showMessage($lang['ap_add_succ'],'index.php?act=adv&op=ap_manage','html','succ',1,4000);
  308. }else {
  309. showMessage($lang['ap_add_fail']);
  310. }
  311. }
  312. }
  313. }
  314. /**
  315. *
  316. * 广告管理
  317. */
  318. public function advOp(){
  319. $lang = Language::getLangContent();
  320. $adv = Model('adv');
  321. if (chksubmit()){
  322. if (is_array($_POST['del_id']) && !empty($_POST['del_id'])){
  323. // 删除缓存
  324. Model('adv')->dropApCacheByAdvIds($_POST['del_id']);
  325. $in_array_id = "'".implode("','", $_POST['del_id'])."'";
  326. $where = "where adv_id in (".$in_array_id.")";
  327. Db::delete("adv", $where);
  328. }
  329. $url = array(
  330. array(
  331. 'url'=>getReferer(),
  332. 'msg'=>$lang['goback_adv_manage'],
  333. )
  334. );
  335. $this->log(L('adv_del_succ').'[ID:'.$in_array_id.']',null);
  336. showMessage($lang['adv_del_succ'],$url);
  337. }
  338. /**
  339. * 分页
  340. */
  341. $page = new Page();
  342. $page->setEachNum(20);
  343. $page->setStyle('admin');
  344. $condition = array();
  345. $condition['is_allow'] = '1';
  346. $limit = '';
  347. $orderby = '';
  348. if ($_GET['ap_id'] != ''){
  349. $condition['ap_id'] = intval($_GET['ap_id']);
  350. }
  351. $adv_info = $adv->getList($condition,$page,$limit,$orderby);
  352. $ap_info = $adv->getApList();
  353. Tpl::output('adv_info',$adv_info);
  354. Tpl::output('ap_info',$ap_info);
  355. Tpl::output('ap_name',Model()->table('adv_position')->getfby_ap_id(intval($_GET['ap_id']),'ap_name'));
  356. Tpl::output('page',$page->show());
  357. Tpl::showpage('adv.index');
  358. }
  359. /**
  360. *
  361. * 修改广告
  362. */
  363. public function adv_editOp(){
  364. if($_POST['form_submit'] != 'ok'){
  365. $adv = Model('adv');
  366. $condition['adv_id'] = intval($_GET['adv_id']);
  367. $adv_list = $adv->getList($condition);
  368. $ap_info = $adv->getApList();
  369. Tpl::output('ref_url',getReferer());
  370. Tpl::output('adv_list',$adv_list);
  371. Tpl::output('ap_info',$ap_info);
  372. Tpl::showpage('adv.edit');
  373. }else{
  374. $lang = Language::getLangContent();
  375. $adv = Model('adv');
  376. $upload = new UploadFile();
  377. /**
  378. * 验证
  379. */
  380. $obj_validate = new Validate();
  381. $obj_validate->validateparam = array(
  382. array("input"=>$_POST["adv_name"], "require"=>"true", "message"=>$lang['ap_can_not_null']),
  383. array("input"=>$_POST["adv_start_date"], "require"=>"true","message"=>$lang['must_select_start_time']),
  384. array("input"=>$_POST["adv_end_date"], "require"=>"true", "message"=>$lang['must_select_end_time'])
  385. );
  386. $error = $obj_validate->validate();
  387. if ($error != ''){
  388. showMessage($error);
  389. }else {
  390. $param['adv_id'] = intval($_GET['adv_id']);
  391. $param['adv_title'] = trim($_POST['adv_name']);
  392. $param['adv_start_date'] = $this->getunixtime(trim($_POST['adv_start_date']));
  393. $param['adv_end_date'] = $this->getunixtime(trim($_POST['adv_end_date']));
  394. /**
  395. * 建立图片广告信息的入库数组
  396. */
  397. if($_POST['mark'] == '0'){
  398. if($_FILES['adv_pic']['name'] != ''){
  399. $upload->set('default_dir',ATTACH_ADV);
  400. $result = $upload->upfile('adv_pic');
  401. if (!$result){
  402. showMessage($upload->error,'','','error');
  403. }
  404. $ac = array(
  405. 'adv_pic' =>$upload->file_name,
  406. 'adv_pic_url' =>trim($_POST['adv_pic_url'])
  407. );
  408. $ac = serialize($ac);
  409. $param['adv_content'] = $ac;
  410. }else{
  411. $ac = array(
  412. 'adv_pic' =>trim($_POST['pic_ori']),
  413. 'adv_pic_url' =>trim($_POST['adv_pic_url'])
  414. );
  415. $ac = serialize($ac);
  416. $param['adv_content'] = $ac;
  417. }
  418. }
  419. /**
  420. * 建立文字广告信息的入库数组
  421. */
  422. if($_POST['mark'] == '1'){
  423. //判断页面编码确定汉字所占字节数
  424. switch (CHARSET){
  425. case 'UTF-8':
  426. $charrate = 3;
  427. break;
  428. case 'GBK':
  429. $charrate = 2;
  430. break;
  431. }
  432. if(strlen($_POST['adv_word'])>($_POST['adv_word_len']*$charrate)){
  433. $error = $lang['wordadv_toolong'];
  434. showMessage($error);die;
  435. }
  436. $ac = array(
  437. 'adv_word' =>trim($_POST['adv_word']),
  438. 'adv_word_url'=>trim($_POST['adv_word_url'])
  439. );
  440. $ac = serialize($ac);
  441. $param['adv_content'] = $ac;
  442. }
  443. /**
  444. * 建立Flash广告信息的入库数组
  445. */
  446. if($_POST['mark'] == '3'){
  447. if($_FILES['flash_swf']['name'] != ''){
  448. $upload->set('default_dir',ATTACH_ADV);
  449. $result = $upload->upfile('flash_swf');
  450. $ac = array(
  451. 'flash_swf' =>$upload->file_name,
  452. 'flash_url' =>trim($_POST['flash_url'])
  453. );
  454. $ac = serialize($ac);
  455. $param['adv_content'] = $ac;
  456. }else{
  457. $ac = array(
  458. 'flash_swf' =>trim($_POST['flash_ori']),
  459. 'flash_url' =>trim($_POST['flash_url'])
  460. );
  461. $ac = serialize($ac);
  462. $param['adv_content'] = $ac;
  463. }
  464. }
  465. $result = $adv->update($param);
  466. if ($result){
  467. $url = array(
  468. array(
  469. 'url'=>trim($_POST['ref_url']),
  470. 'msg'=>$lang['goback_ap_manage'],
  471. )
  472. );
  473. $this->log(L('adv_change_succ').'['.$_POST["ap_name"].']',null);
  474. showMessage($lang['adv_change_succ'],$url);
  475. }else {
  476. showMessage($lang['adv_change_fail'],$url);
  477. }
  478. }
  479. }
  480. }
  481. /**
  482. *
  483. * 删除广告
  484. */
  485. public function adv_delOp(){
  486. $lang = Language::getLangContent();
  487. $adv = Model('adv');
  488. /**
  489. * 删除一个广告
  490. */
  491. $result = $adv->adv_del(intval($_GET['adv_id']));
  492. if (!$result){
  493. $url = array(
  494. array(
  495. 'url'=>'index.php?act=adv&op=adv',
  496. 'msg'=>$lang['goback_adv_manage'],
  497. ),
  498. array(
  499. 'url'=>'index.php?act=adv&op=ap_manage',
  500. 'msg'=>$lang['goback_ap_manage'],
  501. ),
  502. );
  503. showMessage($lang['adv_del_fail'],$url);die;
  504. }else{
  505. $this->log(L('adv_del_succ').'['.intval($_GET['adv_id']).']',null);
  506. showMessage($lang['adv_del_succ'],$url);die;
  507. }
  508. /**
  509. * 多选删除多个广告
  510. */
  511. if (chksubmit()){
  512. if($_POST['del_id'] != ''){
  513. foreach ($_POST['del_id'] as $k=>$v){
  514. $v = intval($v);
  515. $adv->adv_del($v);
  516. }
  517. $url = array(
  518. array(
  519. 'url'=>'index.php?act=adv&op=adv',
  520. 'msg'=>$lang['goback_adv_manage'],
  521. )
  522. );
  523. showMessage($lang['adv_del_succ'],$url);
  524. }
  525. }
  526. }
  527. /**
  528. *
  529. * 获取UNIX时间戳
  530. */
  531. public function getunixtime($time){
  532. $array = explode("-", $time);
  533. $unix_time = mktime(0,0,0,$array[1],$array[2],$array[0]);
  534. return $unix_time;
  535. }
  536. /**
  537. *
  538. * ajaxOp
  539. */
  540. public function ajaxOp(){
  541. switch ($_GET['branch']){
  542. case 'is_use':
  543. $adv=Model('adv');
  544. $param[trim($_GET['column'])]=intval($_GET['value']);
  545. $param['ap_id']=intval($_GET['id']);
  546. $adv->ap_update($param);
  547. echo 'true';exit;
  548. break;
  549. }
  550. }
  551. }