123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482 |
- <?php
- /**
- * 易优CMS
- * ============================================================================
- * 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.eyoucms.com
- * ----------------------------------------------------------------------------
- * 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
- * ============================================================================
- * Author: 小虎哥 <1105415366@qq.com>
- * Date: 2018-4-3
- */
- namespace app\admin\controller;
- use think\Page;
- use think\Db;
- class Other extends Base
- {
- /*
- * 初始化操作
- */
- public function _initialize()
- {
- parent::_initialize();
- // 判断是否有广告位置
- if (strtolower(ACTION_NAME) != 'index') {
- $count = M('ad_position')->count('id');
- if (empty($count)) {
- $this->success('缺少广告位置,正在前往中……', url('AdPosition/add'), '', 3);
- exit;
- }
- }
- }
- public function index()
- {
- $list = array();
- $get = input('get.');
- $pid = input('param.pid/d', 0);
- $keywords = input('keywords/s');
- $condition = array();
- // 应用搜索条件
- foreach (['keywords', 'pid'] as $key) {
- if (isset($get[$key]) && $get[$key] !== '') {
- if ($key == 'keywords') {
- $condition['a.title'] = array('LIKE', "%{$get[$key]}%");
- } else {
- $tmp_key = 'a.'.$key;
- $condition[$tmp_key] = array('eq', $get[$key]);
- }
- }
- }
- // 多语言
- $condition['a.lang'] = array('eq', $this->admin_lang);
- $adM = M('ad');
- $count = $adM->alias('a')->where($condition)->count();// 查询满足要求的总记录数
- $Page = new Page($count, config('paginate.list_rows'));// 实例化分页类 传入总记录数和每页显示的记录数
- $list = $adM->alias('a')->where($condition)->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
- /*支持子目录*/
- foreach ($list as $key => $val) {
- $val['litpic'] = handle_subdir_pic($val['litpic']);
- $list[$key] = $val;
- }
- /*--end*/
- $show = $Page->show();// 分页显示输出
- $this->assign('page',$show);// 赋值分页输出
- $this->assign('list',$list);// 赋值数据集
- $this->assign('pager',$Page);// 赋值分页对象
- $ad_position = model('AdPosition')->getAll('*','id');
- $this->assign('ad_position',$ad_position);
- $this->assign('pid',$pid);// 赋值分页对象
- return $this->fetch();
- }
-
- /**
- * 新增
- */
- public function add()
- {
- $this->language_access(); // 多语言功能操作权限
- if (IS_POST) {
- $post = input('post.');
- $is_remote = !empty($post['is_remote']) ? $post['is_remote'] : 0;
- $litpic = '';
- if ($is_remote == 1) {
- $litpic = $post['litpic_remote'];
- } else {
- $litpic = $post['litpic_local'];
- }
- $newData = array(
- 'litpic' => $litpic,
- 'admin_id' => session('admin_id'),
- 'lang' => $this->admin_lang,
- 'sort_order' => 100,
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- );
- $data = array_merge($post, $newData);
- $insertId = M('ad')->insertGetId($data);
- if ($insertId) {
- /*同步广告位置ID到多语言的模板变量里*/
- $this->syn_add_language_attribute($insertId);
- /*--end*/
- \think\Cache::clear('ad');
- adminLog('新增广告:'.$post['title']);
- $this->success("操作成功", url('Other/index'));
- } else {
- $this->error("操作失败");
- }
- exit;
- }
- $pid = input('param.pid/d', 0);
- $this->assign('pid', $pid);
- $ad_position = model('AdPosition')->getAll('*', 'id');
- $this->assign('ad_position', $ad_position);
- $ad_media_type = config('global.ad_media_type');
- $this->assign('ad_media_type', $ad_media_type);
- return $this->fetch();
- }
-
- /**
- * 编辑
- */
- public function edit()
- {
- if (IS_POST) {
- $post = input('post.');
- if(!empty($post['id'])){
- $is_remote = !empty($post['is_remote']) ? $post['is_remote'] : 0;
- $litpic = '';
- if ($is_remote == 1) {
- $litpic = $post['litpic_remote'];
- } else {
- $litpic = $post['litpic_local'];
- }
- $newData = array(
- 'litpic' => $litpic,
- 'update_time' => getTime(),
- );
- $data = array_merge($post, $newData);
- $r = M('ad')->where([
- 'id' => $post['id'],
- ])
- ->cache(true,null,'ad')
- ->update($data);
- }
- if ($r) {
- adminLog('编辑广告');
- $this->success("操作成功", url('Other/index'));
- } else {
- $this->error("操作失败");
- }
- }
- $assign_data = array();
- $id = input('id/d');
- $field = M('ad')->where([
- 'id' => $id,
- ])->find();
- if (empty($field)) {
- $this->error('广告不存在,请联系管理员!');
- exit;
- }
- if (is_http_url($field['litpic'])) {
- $field['is_remote'] = 1;
- $field['litpic_remote'] = handle_subdir_pic($field['litpic']);
- } else {
- $field['is_remote'] = 0;
- $field['litpic_local'] = handle_subdir_pic($field['litpic']);
- }
-
- /*支持子目录*/
- $field['intro'] = handle_subdir_pic($field['intro'], 'html');
- /*--end*/
- $assign_data['field'] = $field;
- $assign_data['ad_position'] = model('AdPosition')->getAll('*', 'id');
- $assign_data['ad_media_type'] = config('global.ad_media_type');
- $this->assign($assign_data);
- return $this->fetch();
- }
-
- /**
- * 删除
- */
- public function del()
- {
- $this->language_access(); // 多语言功能操作权限
- $id_arr = input('del_id/a');
- $id_arr = eyIntval($id_arr);
- if(!empty($id_arr)){
- /*多语言*/
- $attr_name_arr = [];
- foreach ($id_arr as $key => $val) {
- $attr_name_arr[] = 'ad'.$val;
- }
- if (is_language()) {
- $new_id_arr = Db::name('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->column('attr_value');
- !empty($new_id_arr) && $id_arr = $new_id_arr;
- }
- /*--end*/
- $r = M('ad')->where([
- 'id' => ['IN', $id_arr],
- ])
- ->cache(true,null,'ad')
- ->delete();
- if ($r) {
- /*多语言*/
- if (!empty($attr_name_arr)) {
- M('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->delete();
- M('language_attribute')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->delete();
- }
- /*--end*/
- adminLog('删除广告-id:'.implode(',', $id_arr));
- $this->success('删除成功');
- } else {
- $this->error('删除失败');
- }
- }else{
- $this->error('参数有误');
- }
- }
- /**
- * ui美化新增
- */
- public function ui_add()
- {
- $this->language_access(); // 多语言功能操作权限
- if (IS_POST) {
- $post = input('post.');
- $is_remote = !empty($post['is_remote']) ? $post['is_remote'] : 0;
- $litpic = '';
- if ($is_remote == 1) {
- $litpic = $post['litpic_remote'];
- } else {
- $litpic = $post['litpic_local'];
- }
- $newData = array(
- 'media_type' => 1,
- 'litpic' => $litpic,
- 'lang' => get_current_lang(),
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- );
- $data = array_merge($post, $newData);
- $insertId = M('ad')->insertGetId($data);
- if ($insertId) {
- /*同步广告位置ID到多语言的模板变量里*/
- $this->syn_add_language_attribute($insertId);
- /*--end*/
- \think\Cache::clear('ad');
- adminLog('新增广告:'.$post['title']);
- $this->success('操作成功');
- } else {
- $this->error('操作失败');
- }
- }
- $edit_id = input('param.edit_id/d', 0);
- $pid = input('param.pid/d', 0);
- /*多语言*/
- $new_pid = model('LanguageAttr')->getBindValue($pid, 'ad_position');
- !empty($new_pid) && $pid = $new_pid;
- /*--end*/
- $assign_data = array();
- $assign_data['ad_position'] = model('AdPosition')->getInfo($pid);
- $assign_data['edit_id'] = $edit_id;
- $this->assign($assign_data);
- return $this->fetch();
- }
- /**
- * ui美化编辑
- */
- public function ui_edit()
- {
- if (IS_POST) {
- $post = input('post.');
- if(!empty($post['id'])){
- $is_remote = !empty($post['is_remote']) ? $post['is_remote'] : 0;
- $litpic = '';
- if ($is_remote == 1) {
- $litpic = $post['litpic_remote'];
- } else {
- $litpic = $post['litpic_local'];
- }
- $newData = array(
- 'litpic' => $litpic,
- 'update_time' => getTime(),
- );
- $data = array_merge($post, $newData);
- $r = M('ad')->where([
- 'id' => $post['id'],
- ])
- ->cache(true,null,'ad')
- ->update($data);
- if ($r) {
- adminLog('编辑广告:'.$post['title']);
- $this->success('操作成功');
- }
- }
- $this->error('操作失败');
- }
- $assign_data = array();
- $id = input('id/d');
- $field = M('ad')->where([
- 'id' => $id,
- ])->find();
- if (empty($field)) {
- $this->error('广告不存在,请联系管理员!');
- exit;
- }
- if (is_http_url($field['litpic'])) {
- $field['is_remote'] = 1;
- $field['litpic_remote'] = $field['litpic'];
- } else {
- $field['is_remote'] = 0;
- $field['litpic_local'] = $field['litpic'];
- }
- $assign_data['field'] = $field;
- $assign_data['ad_position'] = model('AdPosition')->getInfo($field['pid']);
- $this->assign($assign_data);
- return $this->fetch();
- }
-
- /**
- * 删除
- */
- public function ui_del()
- {
- $this->language_access(); // 多语言功能操作权限
-
- $id_arr = input('del_id/a');
- $id_arr = eyIntval($id_arr);
- if(!empty($id_arr)){
- /*多语言*/
- $attr_name_arr = [];
- foreach ($id_arr as $key => $val) {
- $attr_name_arr[] = 'ad'.$val;
- }
- if (is_language()) {
- $new_id_arr = Db::name('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->column('attr_value');
- !empty($new_id_arr) && $id_arr = $new_id_arr;
- }
- /*--end*/
- $r = M('ad')->where([
- 'id' => ['IN', $id_arr],
- ])
- ->cache(true,null,'ad')
- ->delete();
- if ($r) {
- /*多语言*/
- if (!empty($attr_name_arr)) {
- M('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->delete();
- M('language_attribute')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'ad',
- ])->delete();
- }
- /*--end*/
- adminLog('删除广告-id:'.implode(',', $id_arr));
- $this->success('删除成功');
- } else {
- $this->error('删除失败');
- }
- }else{
- $this->error('参数有误');
- }
- }
- /**
- * 同步新增广告ID到多语言的模板变量里
- */
- private function syn_add_language_attribute($ad_id)
- {
- /*单语言情况下不执行多语言代码*/
- if (!is_language()) {
- return true;
- }
- /*--end*/
- $attr_group = 'ad';
- $admin_lang = $this->admin_lang;
- $main_lang = get_main_lang();
- $languageRow = Db::name('language')->field('mark')->order('id asc')->select();
- if (!empty($languageRow) && $admin_lang == $main_lang) { // 当前语言是主体语言,即语言列表最早新增的语言
- $ad_db = Db::name('ad');
- $result = $ad_db->find($ad_id);
- $attr_name = 'ad'.$ad_id;
- $r = Db::name('language_attribute')->save([
- 'attr_title' => $result['title'],
- 'attr_name' => $attr_name,
- 'attr_group' => $attr_group,
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ]);
- if (false !== $r) {
- $data = [];
- foreach ($languageRow as $key => $val) {
- /*同步新广告到其他语言广告列表*/
- if ($val['mark'] != $admin_lang) {
- $addsaveData = $result;
- $addsaveData['lang'] = $val['mark'];
- $newPid = Db::name('language_attr')->where([
- 'attr_name' => 'adp'.$result['pid'],
- 'attr_group' => 'ad_position',
- 'lang' => $val['mark'],
- ])->getField('attr_value');
- $addsaveData['pid'] = $newPid;
- unset($addsaveData['id']);
- $ad_id = $ad_db->insertGetId($addsaveData);
- }
- /*--end*/
-
- /*所有语言绑定在主语言的ID容器里*/
- $data[] = [
- 'attr_name' => $attr_name,
- 'attr_value' => $ad_id,
- 'lang' => $val['mark'],
- 'attr_group' => $attr_group,
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- /*--end*/
- }
- if (!empty($data)) {
- model('LanguageAttr')->saveAll($data);
- }
- }
- }
- }
- }
|