File: /www/wwwroot/bs.kntsleep.com/system/admin/recycle/recycle.class.php
<?php
/*
* Copyright (c) Huyin Information Technology Co., Ltd. All Rights Reserved.
* BOSSCMS Content Management System (https://www.bosscms.net/)
*/
defined('IS_OK') or exit('Access Forbidden');
into::basic_class('admin');
class recycle extends admin
{
public function init()
{
global $G;
$G['cover'] = $this->cover('recycle');
$where = 1;
$type = arrExist($G,'get|type');
$items = arrExist($G,'get|items');
if(!$type && $res=mysql::select_one('type','items',"id='{$items}'")){
$type = $res['type'];
}
if($type && !preg_match('/^(2|3|4|5)\d?$/',$type)){
alert('栏目类型错误');
}
$man = mysql::select_all('id,alias,username','manager',"level>{$G['manager']['level']} OR id='{$G['manager']['id']}'");
foreach($man as $v){
$G['man'][$v['id']] = $v['alias']?$v['alias']:$v['username'];
}
if(!into::load_class('admin','group','group','new')->allow('read')){
if($man){
$where = "(issuer<0 OR FIND_IN_SET(issuer,'{$G['manager']['id']},".implode(',',arrOption($man,'id','id'))."')) AND {$where}";
}else{
$where = "(issuer='{$G['manager']['id']}' OR issuer<0) AND {$where}";
}
}
$rows = $G['rows'] = $this->rows(20);
$sql = array();
foreach($G['pass']['type'] as $k=>$v){
if(preg_match('/^(2|3|4|5)\d?$/',$v)){
$sql[] = "SELECT id,items,weight,notice,issuer,name,top,recommend,mtime,sort,{$v} AS type FROM ".$G['mysql']['prefix'].$k." WHERE recycle=1 AND lang={$G['language']['id']}";
}
}
$pages = is_numeric($G['get']['pages'])&&$G['get']['pages']>0?ceil($G['get']['pages']):1;
$data['list'] = mysql::select("SELECT SQL_CALC_FOUND_ROWS * FROM (".implode(' UNION ALL ',$sql).") AS t WHERE {$where} ORDER BY mtime DESC, id DESC LIMIT ".(($pages-1)*$rows).','.$rows);
foreach($data['list'] as $k=>$v){
if($v['issuer']>0){
$data['list'][$k]['user'] = $G['man'][$v['issuer']];
}else if($v['issuer']<0){
$data['list'][$k]['user'] = arrExist(mysql::select_one('username','member',"id='".abs($v['issuer'])."'"),'username');
}else{
$data['list'][$k]['user'] = $G['man'][1];
}
}
$data['total'] = arrExist(mysql::select('SELECT FOUND_ROWS() AS _total'),'0|_total');
into::basic_class('pages');
$data['pages'] = pages::btns(ceil($data['total']/$rows), $pages, null, null, 'pages');
$G['subarr'] = page::items_option(0,false,array(),false,'^(2|3|4|5)\d?$');
echo $this->theme('recycle/recycle', $data);
}
public function modify()
{
global $G;
$this->cover('recycle','M');
if(isset($G['post']['id'])){
$error=array();
foreach($G['post']['id'] as $typeid){
list($type,$id) = explode('_',$typeid);
$table = array_search($type,$G['pass']['type']);
$man = implode(',',arrOption(mysql::select_all('id','manager',"level>{$G['manager']['level']} OR id='{$G['manager']['id']}'"),'id','id'));
if($G['manager']['level']==1){
$man .= ',0';
}
if(is_numeric(mysql::update(array('recycle'=>0),$table,"id='{$id}' AND (issuer<0 OR FIND_IN_SET(issuer,'".$man."'))"))){
$tags = mysql::select_all('id,parent','tag',"type='{$type}' AND FIND_IN_SET('{$id}',parent)");
foreach($tags as $v){
mysql::update(array('amount'=>arrExist(mysql::select_one("COUNT(*) AS amount",$table,"FIND_IN_SET(id,'{$v['parent']}') AND display=1 AND recycle=0 AND weight>=0"),'amount')),'tag',"id='{$v['id']}'");
}
}else{
$error[]=$id;
}
}
if($error){
alert('ID为'.implode(',',$error).'还原失败');
}else{
alert('还原成功', url::mpf('recycle','recycle','init'));
}
}else{
alert('没有提交信息');
}
}
public function delete()
{
global $G;
$this->cover('recycle','D');
if(isset($G['post']['url']) && isset($G['get']['id'])){
$success = $error = array();
$arr = explode(',',$G['get']['id']);
foreach($arr as $typeid){
list($type,$id) = explode('_',$typeid);
$table = array_search($type,$G['pass']['type']);
if(is_numeric($id) && mysql::total($table,"id='{$id}'")){
if(is_numeric(mysql::delete($table,"id='{$id}'"))){
mysql::delete($table.'_content',"id='{$id}'");
mysql::delete('top',"model='{$type}' AND parent='{$id}'");
mysql::delete('tag',"type='{$type}' AND parent='{$id}'");
if($res = mysql::select_all('id,parent','tag',"type='{$type}' AND FIND_IN_SET('{$id}',parent)")){
foreach($res as $v){
mysql::update(array('parent'=>trim(str_replace(",{$id},",',',",{$v['parent']},"),',')),'tag',"id='{$v['id']}'");
}
}
if($G['config']['shop_open'] && $G['config']['shop_model']==$type){
into::load_class('plugin','shop','shop','new')->delete($id);
}
$success[] = $id;
}else{
$error[] = $id;
}
}else{
$error[] = $id;
}
}
if($error){
alert('ID为'.implode(',',$error).'删除失败');
}else{
$this->sitemap();
alert('删除成功', url::mpf('recycle','recycle','init'));
}
}
alert('没有提交信息');
}
}
?>