📄 正在查看:admin/control/tag_control.class.php
1<?php
2/**
3 * (C)2012-2014 twcms.com TongWang Inc.
4 * Author: wuzhaohuan <kongphp@gmail.com>
5 */
6
7defined('TWCMS_PATH') or exit;
8
9class tag_control extends admin_control {
10 // 标签管理
11 public function index() {
12 // hook admin_tag_control_index_before.php
13
14 $mid = max(2, (int)R('mid'));
15 $table = $this->models->get_table($mid);
16
17 // 模型名称
18 $mod_name = $this->models->get_name();
19 if(isset($mod_name[1])) unset($mod_name[1]);
20 $this->assign('mid', $mid);
21 $this->assign('mod_name', $mod_name);
22
23 $this->cms_content_tag->table = 'cms_'.$table.'_tag';
24
25 // 初始分页
26 $pagenum = 20;
27 $total = $this->cms_content_tag->count();
28 $maxpage = max(1, ceil($total/$pagenum));
29 $page = min($maxpage, max(1, intval(R('page'))));
30 $pages = pages($page, $maxpage, 'index.php?u=tag-index-mid-'.$mid.'-page-{page}');
31 $this->assign('pages', $pages);
32 $this->assign('total', $total);
33
34 // 获取标签列表
35 $list_arr = $this->cms_content_tag->list_arr(-1, ($page-1)*$pagenum, $pagenum, $total);
36 foreach($list_arr as &$v) {
37 $v['url'] = $this->cms_content->tag_url($v['mid'], $v['name']);
38 }
39
40 $this->assign('list_arr', $list_arr);
41
42 // hook admin_tag_control_index_after.php
43
44 $this->display();
45 }
46
47 // 读取一条标签
48 public function get_json() {
49 // hook admin_tag_control_get_json_before.php
50
51 $mid = max(2, (int)R('mid', 'P'));
52 $table = $this->models->get_table($mid);
53
54 $tagid = (int) R('tagid', 'P');
55
56 $this->cms_content_tag->table = 'cms_'.$table.'_tag';
57 $data = $this->cms_content_tag->read($tagid);
58
59 // hook admin_tag_control_get_json_after.php
60
61 echo json_encode($data);
62 exit;
63 }
64
65 // 添加标签
66 public function add() {
67 // hook admin_tag_control_add_before.php
68
69 $mid = max(2, (int)R('mid', 'P'));
70 $table = $this->models->get_table($mid);
71
72 $name = trim(safe_str(R('name', 'P')));
73 $content = htmlspecialchars(trim(R('content', 'P')));
74
75 empty($name) && E(1, '名称不能为空!');
76 strlen($name)>30 && E(1, '名称太长了!');
77
78 $data = array('name'=>$name, 'count'=>0, 'content'=>$content);
79 $this->cms_content_tag->table = 'cms_'.$table.'_tag';
80
81 // hook admin_tag_control_add_after.php
82
83 if($this->cms_content_tag->create($data)) {
84 E(0, '添加成功!');
85 }else{
86 E(1, '添加失败!');
87 }
88 }
89
90 // 编辑标签
91 public function edit() {
92 // hook admin_tag_control_edit_before.php
93
94 $mid = max(2, (int)R('mid', 'P'));
95 $table = $this->models->get_table($mid);
96
97 $tagid = (int) R('tagid', 'P');
98 $name = trim(safe_str(R('name', 'P')));
99 $content = htmlspecialchars(trim(R('content', 'P')));
100
101 empty($tagid) && E(1, '标签ID不能为空!');
102 empty($name) && E(1, '名称不能为空!');
103 strlen($name)>30 && E(1, '名称太长了!');
104
105 $this->cms_content->table = 'cms_'.$table;
106 $this->cms_content_tag->table = 'cms_'.$table.'_tag';
107 $this->cms_content_tag_data->table = 'cms_'.$table.'_tag_data';
108
109 $data = $this->cms_content_tag->read($tagid);
110
111 // 修改 cms_content 表的内容
112 if($data['name'] != $name) {
113 $list_arr = $this->cms_content_tag_data->find_fetch(array('tagid'=>$tagid));
114 foreach($list_arr as $v) {
115 $data2 = $this->cms_content->read($v['id']);
116 if(empty($data2)) return '读取内容表出错!';
117
118 $row = _json_decode($data2['tags']);
119 $row[$tagid] = $name;
120 $data2['tags'] = _json_encode($row);
121
122 if(!$this->cms_content->update($data2)) return '写入内容表出错!';
123 }
124 }
125
126 // hook admin_tag_control_edit_after.php
127
128 $data['name'] = $name;
129 $data['content'] = $content;
130 if($this->cms_content_tag->update($data)) {
131 E(0, '编辑成功!');
132 }else{
133 E(1, '编辑失败!');
134 }
135 }
136
137 // 删除标签
138 public function del() {
139 // hook admin_tag_control_del_before.php
140
141 $mid = max(2, (int)R('mid', 'P'));
142 $table = $this->models->get_table($mid);
143
144 $tagid = (int) R('tagid', 'P');
145
146 empty($tagid) && E(1, '标签ID不能为空!');
147
148 // hook admin_tag_control_del_after.php
149
150 $err = $this->cms_content_tag->xdelete($table, $tagid);
151 if($err) {
152 E(1, $err);
153 }else{
154 E(0, '删除成功!');
155 }
156 }
157
158 // 批量删除标签
159 public function batch_del() {
160 // hook admin_tag_control_batch_del_before.php
161
162 $mid = max(2, (int)R('mid', 'P'));
163 $table = $this->models->get_table($mid);
164
165 $id_arr = R('id_arr', 'P');
166
167 if(!empty($id_arr) && is_array($id_arr)) {
168 $err_num = 0;
169 foreach($id_arr as $tagid) {
170 $err = $this->cms_content_tag->xdelete($table, $tagid);
171 if($err) $err_num++;
172 }
173
174 if($err_num) {
175 E(1, $err_num.' 条标签删除失败!');
176 }else{
177 E(0, '删除成功!');
178 }
179 }else{
180 E(1, '参数不能为空!');
181 }
182 }
183
184 // hook admin_tag_control_after.php
185}
186