123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <?php
- /**
- * 易优CMS
- * ============================================================================
- * 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.eyoucms.com
- * ----------------------------------------------------------------------------
- * 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
- * ============================================================================
- * Author: 小虎哥 <1105415366@qq.com>
- * Date: 2018-4-3
- */
-
- namespace app\admin\controller;
-
- use think\Db;
- use think\Page;
- use think\Cache;
-
- class LinksGroup extends Base
- {
- public function index()
- {
- $list = array();
- $keywords = input('keywords/s');
-
- $condition = array();
- if (!empty($keywords)) {
- $condition['group_name'] = array('LIKE', "%{$keywords}%");
- }
- $condition['lang'] = array('eq', $this->admin_lang);
-
- $linksgroupsM = Db::name('links_group');
- $count = $linksgroupsM->where($condition)->count('id');// 查询满足要求的总记录数
- $Page = $pager = new Page($count, config('paginate.list_rows'));// 实例化分页类 传入总记录数和每页显示的记录数
- $list = $linksgroupsM->where($condition)->order('sort_order asc, id asc')->limit($Page->firstRow.','.$Page->listRows)->select();
- $min_group_id = 0;
- foreach ($list as $key => $val) {
- if ($min_group_id > $val['id'] || empty($min_group_id)) {
- $min_group_id = $val['id'];
- }
- }
- $this->assign('min_group_id',$min_group_id);
-
- /*多语言模式下,分组ID显示主体语言的ID*/
- $main_group_list = [];
- if ($this->admin_lang != $this->main_lang && empty($this->globalConfig['language_split'])) {
- $attr_values = get_arr_column($list, 'id');
- $languageAttrRow = Db::name('language_attr')->field('attr_name,attr_value')->where([
- 'attr_value' => ['IN', $attr_values],
- 'attr_group' => 'links_group',
- 'lang' => $this->admin_lang,
- ])->getAllWithIndex('attr_value');
- $groupids = [];
- foreach ($languageAttrRow as $key => $val) {
- $gid_tmp = str_replace('linksgroup', '', $val['attr_name']);
- array_push($groupids, intval($gid_tmp));
- }
- $main_GroupRow = Db::name('links_group')->field("id,CONCAT('linksgroup', id) AS attr_name")
- ->where([
- 'id' => ['IN', $groupids],
- 'lang' => $this->main_lang,
- ])->getAllWithIndex('attr_name');
- foreach ($list as $key => $val) {
- $key_tmp = !empty($languageAttrRow[$val['id']]['attr_name']) ? $languageAttrRow[$val['id']]['attr_name'] : '';
- $main_group_list[$val['id']] = [
- 'id' => !empty($main_GroupRow[$key_tmp]['id']) ? $main_GroupRow[$key_tmp]['id'] : 0,
- ];
- }
- }
- $this->assign('main_group_list', $main_group_list);
- /*end*/
-
- $show = $Page->show();// 分页显示输出
- $this->assign('page',$show);// 赋值分页输出
- $this->assign('list',$list);// 赋值数据集
- $this->assign('pager',$pager);// 赋值分页对象
- return $this->fetch();
- }
-
- /**
- * 保存友情链接分组
- */
- public function linksgroup_save()
- {
- if (IS_AJAX_POST) {
- $post = input('post.');
-
- if (empty($post['group_name'])) {
- $this->error('至少新增一个链接分组!');
- } else {
- $is_empty = true;
- foreach ($post['group_name'] as $key => $val) {
- $val = trim($val);
- if (!empty($val)) {
- $is_empty = false;
- break;
- }
- }
- if (true === $is_empty) {
- $this->error('分组名称不能为空!');
- }
- }
-
- // 数据拼装
- $now_time = getTime();
- $addData = $editData = [];
- foreach ($post['group_name'] as $key => $val) {
- $group_name = trim($val);
- if (!empty($group_name)) {
- if (empty($post['id'][$key])) {
- if ($this->admin_lang == $this->main_lang || !empty($this->globalConfig['language_split'])) {
- $addData[] = [
- 'group_name' => $group_name,
- 'sort_order' => $post['sort_order'][$key] ? :100,
- 'lang' => $this->admin_lang,
- 'add_time' => $now_time,
- 'update_time' => $now_time,
- ];
- }
- } else {
- $id = intval($post['id'][$key]);
- $editData[] = [
- 'id' => $id,
- 'group_name' => $group_name,
- 'sort_order' => $post['sort_order'][$key] ? :100,
- 'lang' => $this->admin_lang,
- 'update_time' => $now_time,
- ];
- }
- }
- }
-
- if (!empty($addData)) {
- $rdata = model('LinksGroup')->saveAll($addData);
- /*多语言*/
- if (is_language()) {
- foreach ($rdata as $k1 => $v1) {
- $attr_data = $v1->getData();
- // 同步分组ID到多语言的模板变量里,添加多语言分组位
- $this->syn_add_language_linksgroup($attr_data['id']);
- }
- }
- /*end*/
- }
-
- $r = true;
- if (!empty($editData)) {
- $r = model('LinksGroup')->saveAll($editData);
- }
-
- if ($r !== false) {
- Cache::clear('links');
- Cache::clear('links_group');
- adminLog('保存链接分组:'.implode(',', $post['group_name']));
- $this->success('操作成功');
- }
- }
- $this->error('操作失败');
- }
-
- /**
- * 同步新增分组ID到多语言的模板变量里
- */
- private function syn_add_language_linksgroup($group_id)
- {
- /*单语言情况下不执行多语言代码*/
- if (!is_language() || tpCache('language.language_split')) {
- return true;
- }
- /*--end*/
-
- $attr_group = 'links_group';
- $languageRow = Db::name('language')->field('mark')->order('id asc')->select();
- if (!empty($languageRow) && $this->admin_lang == $this->main_lang) { // 当前语言是主体语言,即语言列表最早新增的语言
- $links_group_db = Db::name('links_group');
- $result = $links_group_db->find($group_id);
- $attr_name = 'linksgroup'.$group_id;
- $r = Db::name('language_attribute')->save([
- 'attr_title' => $result['group_name'],
- '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'] != $this->admin_lang) {
- $addsaveData = $result;
- $addsaveData['lang'] = $val['mark'];
- $addsaveData['group_name'] = $val['mark'].$addsaveData['group_name'];
- unset($addsaveData['id']);
- $group_id = $links_group_db->insertGetId($addsaveData);
- }
- /*--end*/
-
- /*所有语言绑定在主语言的ID容器里*/
- $data[] = [
- 'attr_name' => $attr_name,
- 'attr_value' => $group_id,
- 'lang' => $val['mark'],
- 'attr_group' => $attr_group,
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- /*--end*/
- }
- if (!empty($data)) {
- model('LanguageAttr')->saveAll($data);
- }
- }
- }
- }
-
- /**
- * 删除友情链接分组
- */
- public function del()
- {
- if (is_language() && empty($this->globalConfig['language_split'])) {
- $this->language_access(); // 多语言功能操作权限
- }
-
- $id_arr = input('del_id/a');
- $id_arr = eyIntval($id_arr);
- if(IS_POST && !empty($id_arr)){
- $linksGroupRow = Db::name('links_group')->where(['lang'=>$this->admin_lang])->order('id asc')->column('id');
- if (!empty($linksGroupRow)) {
- if (1 < count($linksGroupRow)) {
- $firstRow = current($linksGroupRow);
- $min_group_id = empty($firstRow['id']) ? 0 : $firstRow['id'];
- if (in_array($min_group_id, $id_arr)) {
- $this->error('禁止删除默认分组');
- }
- } else {
- $this->error('至少保留一个分组');
- }
- }
-
- /*多语言*/
- $attr_name_arr = [];
- foreach ($id_arr as $key => $val) {
- $attr_name_arr[] = 'linksgroup'.$val;
- }
- if (is_language() && empty($this->globalConfig['language_split'])) {
- $new_id_arr = Db::name('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'links_group',
- ])->column('attr_value');
- !empty($new_id_arr) && $id_arr = $new_id_arr;
- }
- /*--end*/
-
- $group_name_list = Db::name('links_group')->where([
- 'id' => ['IN', $id_arr],
- ])->column('group_name');
-
- $r = Db::name('links_group')->where([
- 'id' => ['IN', $id_arr],
- ])->delete();
- if ($r !== false) {
-
- /*删除多语言友情链接分组关联绑定*/
- if (!empty($attr_name_arr)) {
- if (get_admin_lang() == get_main_lang()) {
- Db::name('language_attribute')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'links_group',
- ])->delete();
- }
- if (empty($this->globalConfig['language_split'])) {
- Db::name('language_attr')->where([
- 'attr_name' => ['IN', $attr_name_arr],
- 'attr_group' => 'links_group',
- ])->delete();
- } else {
- Db::name('language_attr')->where([
- 'attr_value' => ['IN', $id_arr],
- 'attr_group' => 'links_group',
- ])->delete();
- }
- }
- /*--end*/
-
- Db::name('links')->where([
- 'groupid' => ['IN', $id_arr],
- ])->delete();
-
- Cache::clear('links');
- Cache::clear('links_group');
- adminLog('删除友情链接分组:'.implode(',', $group_name_list));
- $this->success('删除成功');
- }
- }
- $this->error('删除失败');
- }
- }
|