badword.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. pc_base::load_app_class('admin','admin',0);
  4. class badword extends admin {
  5. function __construct() {
  6. $admin_username = param::get_cookie('admin_username');
  7. $userid = $_SESSION['userid'];
  8. $this->db = pc_base::load_model('badword_model');
  9. parent::__construct();
  10. }
  11. function init () {
  12. $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;
  13. $infos = $pages = '';
  14. $infos = $this->db->listinfo($where = '',$order = 'badid DESC',$page, $pages = '13');
  15. $pages = $this->db->pages;
  16. $level = array(1=>L('general'),2=>L('danger'));
  17. $big_menu = array('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=admin&c=badword&a=add\', title:\''.L('badword_add').'\', width:\'450\', height:\'180\'}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('badword_add'));
  18. include $this->admin_tpl('badword_list');
  19. }
  20. /**
  21. * 敏感词添加
  22. */
  23. function add() {
  24. if(isset($_POST['dosubmit'])){
  25. $_POST['info']['lastusetime'] = SYS_TIME;
  26. $_POST['info']['replaceword'] = str_replace(" ","",trim($_POST['replaceword']));
  27. $_POST['info']['badword'] = str_replace(" ","",trim($_POST['badword']));
  28. if(empty($_POST['info']['badword'])) {
  29. showmessage(L('enter_word'),'?m=admin&c=badword&a=add');
  30. }
  31. $this->db->insert($_POST['info']);
  32. $this->public_cache_file();//更新缓存
  33. showmessage(L('operation_success'),'?m=admin&c=badword&a=add','', 'add');
  34. }else{
  35. $show_validator = $show_scroll = $show_header = true;
  36. include $this->admin_tpl('badword_add');
  37. }
  38. }
  39. public function public_name() {
  40. $badword = isset($_GET['badword']) && trim($_GET['badword']) ? (pc_base::load_config('system', 'charset') == 'gbk' ? iconv('utf-8', 'gbk', trim($_GET['badword'])) : trim($_GET['badword'])) : exit('0');
  41. $badid = isset($_GET['badid']) && intval($_GET['badid']) ? intval($_GET['badid']) : '';
  42. $data = array();
  43. if ($badid) {
  44. $data = $this->db->get_one(array('badid'=>$badid), 'badword');
  45. if (!empty($data) && $data['badword'] == $badword) {
  46. exit('1');
  47. }
  48. }
  49. if ($this->db->get_one(array('badword'=>$badword), 'badid')) {
  50. exit('0');
  51. } else {
  52. exit('1');
  53. }
  54. }
  55. /**
  56. * 敏感词排序
  57. */
  58. function listorder() {
  59. if(!is_array($_POST['listorders'])) return false;
  60. foreach($_POST['listorders'] as $badid => $listorder) {
  61. $this->db->update(array('listorder'=>$listorder),array('badid'=>$badid));
  62. }
  63. showmessage(L('operation_success'),'?m=admin&c=badword');
  64. }
  65. /**
  66. * 敏感词修改
  67. */
  68. function edit() {
  69. if(isset($_POST['dosubmit'])){
  70. $badid = intval($_GET['badid']);
  71. $_POST['info']['replaceword'] = str_replace(" ","",trim($_POST['replaceword']));
  72. $_POST['info']['badword'] = str_replace(" ","",trim($_POST['badword']));
  73. $this->db->update($_POST['info'],array('badid'=>$badid));
  74. $this->public_cache_file();//更新缓存
  75. showmessage(L('operation_success'),'?m=admin&c=badword&a=edit','', 'edit');
  76. }else{
  77. $show_validator = $show_scroll = $show_header = true;
  78. $info = array();
  79. $info = $this->db->get_one(array('badid'=>$_GET['badid']));
  80. if(!$info) showmessage(L('keywords_no_exist'));
  81. extract($info);
  82. include $this->admin_tpl('badword_edit');
  83. }
  84. }
  85. /**
  86. * 关键词删除 包含批量删除 单个删除
  87. */
  88. function delete() {
  89. if(is_array($_POST['badid'])){
  90. foreach($_POST['badid'] as $badid_arr) {
  91. $this->db->delete(array('badid'=>$badid_arr));
  92. }
  93. $this->public_cache_file();//更新缓存
  94. showmessage(L('operation_success'),'?m=admin&c=badword');
  95. }else{
  96. $badid = intval($_GET['badid']);
  97. if($badid < 1) return false;
  98. $result = $this->db->delete(array('badid'=>$badid));
  99. if($result){
  100. $this->public_cache_file();//更新缓存
  101. showmessage(L('operation_success'),'?m=admin&c=badword');
  102. }else {
  103. showmessage(L("operation_failure"),'?m=admin&c=badword');
  104. }
  105. }
  106. }
  107. /**
  108. * 导出敏感词为文本 一行一条记录
  109. */
  110. function export() {
  111. $result = $s = '';
  112. $result = $this->db->select($where = '', $data = '*', $limit = '', $order = 'badid DESC', $group = '');
  113. if(!is_array($result) || empty($result)){
  114. showmessage('暂无敏感词设置,正在返回!','?m=admin&c=badword');
  115. }
  116. foreach($result as $s){
  117. extract($s);
  118. $str .= $badword.','.$replaceword.','.$level."\n";
  119. }
  120. $filename = L('export');
  121. header('Content-Type: text/x-sql');
  122. header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  123. header('Content-Disposition: attachment; filename="' . $filename . '"');
  124. $is_ie = 'IE';
  125. if ($is_ie == 'IE') {
  126. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  127. header('Pragma: public');
  128. } else {
  129. header('Pragma: no-cache');
  130. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  131. }
  132. echo $str;
  133. exit();
  134. }
  135. /**
  136. * 从文本中导入敏感词, 一行一条记录
  137. */
  138. function import(){
  139. if(isset($_POST['dosubmit'])){
  140. $arr = $s = $str = $level_arr = '';
  141. $s = trim($_POST['info']);
  142. if(empty($s)) showmessage(L('not_information'),'?m=admin&c=badword&a=import');
  143. $arr = explode("\n",$s);
  144. if(!is_array($arr) || empty($arr)) return false;
  145. foreach($arr as $s){
  146. $level_arr = array("1","2");
  147. $str = explode(",",$s);
  148. $sql_str = array();
  149. $sql_str['badword'] = $str[0];
  150. $sql_str['replaceword'] = $str[1];
  151. $sql_str['level'] = $str[2];
  152. $sql_str['lastusetime'] = SYS_TIME;
  153. if(!in_array($sql_str['level'],$level_arr)) $sql_str['level'] = '1';
  154. if(empty($sql_str['badword'])){
  155. continue;
  156. }else{
  157. $check_badword = $this->db->get_one(array('badword'=>$sql_str['badword']), $data = '*', $order = '', $group = '');
  158. if($check_badword){
  159. continue;
  160. }
  161. $this->db->insert($sql_str);
  162. }
  163. unset($sql_str,$check_badword);
  164. }
  165. showmessage(L('operation_success'),'?m=admin&c=badword');
  166. }else{
  167. include $this->admin_tpl('badword_import');
  168. }
  169. }
  170. /**
  171. * 生成缓存
  172. */
  173. function public_cache_file() {
  174. $infos = $this->db->select('','badid,badword,replaceword,level','','badid ASC');
  175. setcache('badword', $infos, 'commons');
  176. return true;
  177. }
  178. }
  179. ?>