adv.php 17 KB

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