File: /www/wwwroot/bs.kntsleep.com/system/admin/items/items.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 items extends admin
{
public function init()
{
global $G;
$G['cover'] = $this->cover();
$data = array();
$config = load::config();
$data['max'] = isset($config['level'])&&is_numeric($config['level'])?$config['level']:3;
$data['list'] = page::items(0);
foreach($data['list'] as $v){
if($v['type']!=9){
if(!is_file(ROOT_PATH.$v['folder'].'/index.php')){
$v['has_folder'] = $this->create($v['folder']);
}
}
}
echo $this->theme('items/items', $data);
}
public function modify()
{
global $G;
$this->cover('items','M');
if(isset($G['post']['id'])){
$error=array();
foreach($G['post']['id'] as $id){
if(isset($G['post']['sort'.$id])){
$data = array(
'sort'=>$G['post']['sort'.$id]
);
if(!is_numeric(mysql::update($data,'items',"id='{$id}'"))){
$error[]=$id;
}
}
}
if($error){
alert('ID为'.implode(',',$error).'修改失败');
}else{
$this->sitemap();
alert('修改成功', url::mpf('items','items','init'));
}
}else{
alert('没有提交信息');
}
}
/* b o s s c m s */
public function edit()
{
global $G;
$G['cover'] = $this->cover('items');
$G['no_copyright'] = $G['get']['simple'];
$data = $over = array();
if(isset($G['get']['id'])){
$id = $over[] = $G['get']['id'];
$data = mysql::select_one('*','items',"id='{$id}'");
$data['models'] = mysql::select_one('*','models',"id='{$data['type']}'");
}else{
$G['contribute'] = arrExist(mysql::select_one('GROUP_CONCAT(id) AS ids',"models",'contribute=1'),'ids');
$G['comments'] = arrExist(mysql::select_one('GROUP_CONCAT(id) AS ids',"models",'comments=1'),'ids');
}
if(isset($G['get']['parent'])){
$parent = $data['parent'] = $G['get']['parent'];
$result = mysql::select_one('type,theme,themes,folder','items',"id='{$parent}'");
if(isset($result['type'])){
$data['type'] = $result['type']!=9?$result['type']:'';
$data['theme'] = $result['theme'];
$data['themes'] = $result['themes'];
$data['folder'] = $result['folder'];
}
}
$data['page'] = array();
$path = load::theme().'html/';
$temp = dir::read($path);
foreach($temp['dir'] as $dir){
$res = dir::read($path.'/'.$dir);
foreach($res['file'] as $v){
$data['page'][$dir][$v] = $v;
}
}
foreach($temp['file'] as $v){
$data['page'][preg_replace('/\.\w+$/','',$v)][$v] = $v;
}
foreach($G['pass']['only'] as $k=>$v){
if(mysql::total('items',"type='{$k}' AND id!='{$G['get']['id']}'".($v?'':' AND lang=lang'))){
unset($G['option']['type'][$k]);
}
}
if($res = page::models('id',"FIND_IN_SET(id,'2,3,4,5') AND display='0'")){
foreach($res as $v){
unset($G['option']['type'][$v['id']]);
}
}
$config = load::config();
$data['transfer'] = isset($config['transfer']['items'])?$config['transfer']['items']:array();
$data['grade'] = into::load_class('admin','group','group','new')->grade();
unset($data['grade'][-1]);
/* 获取栏目列表 */
$data['subarr'] = page::items_option('0', '顶级栏目', $over, false);
echo $this->theme('items/edit',$data);
}
public function add()
{
global $G;
$id = arrExist($G['get'],'id');
$this->cover('items',$id?'M':'A');
if(isset($G['post'])){
$data = array(
'name' => $G['post']['name'],
'type' => $G['post']['type'],
'theme' => arrExist($G['post'],"theme{$G['post']['type']}"),
'themes' => arrExist($G['post'],"themes{$G['post']['type']}"),
'title' => arrExist($G['post'],'title'),
'keywords' => arrExist($G['post'],'keywords'),
'description' => arrExist($G['post'],'description'),
'alt' => arrExist($G['post'],'alt'),
'head' => $G['post']['head'],
'foot' => $G['post']['foot'],
'nofollow' => $G['post']['nofollow'],
'target' => $G['post']['target'],
'sort' => $G['post']['sort'],
'weight' => $G['post']['weight'],
'display' => $G['post']['display'],
'contribute' => $G['post']['contribute']?1:0,
'comments' => $G['post']['comments']?1:0,
'static' => arrExist($G['post'],'static'),
'folder' => arrExist($G['post'],'folder'),
'parent' => arrExist($G['post'],'parent'),
'link' => arrExist($G['post'],'link'),
/* 栏目表保留字段 */
'icon' => arrExist($G['post'],'icon'),
'image' => arrExist($G['post'],'image'),
'images' => arrExist($G['post'],'images'),
'text' => arrExist($G['post'],'text'),
'container' => arrExist($G['post'],'container'),
/* 栏目表预留字段 */
'icon1' => arrExist($G['post'],'icon1'),
'image1' => arrExist($G['post'],'image1'),
'image2' => arrExist($G['post'],'image2'),
'image3' => arrExist($G['post'],'image3'),
'text1' => arrExist($G['post'],'text1'),
'text2' => arrExist($G['post'],'text2'),
'text3' => arrExist($G['post'],'text3')
);
if(mysql::total('models',"id='{$data['type']}' AND display='0'")){
alert($G['option']['type'][$data['type']].'已关闭');
}
if(is_numeric($data['parent']) && $result=mysql::select_one('level','items',"id='{$data['parent']}'")){
$data['level'] = $result['level']+1;
$config = load::config();
$maxlevel = isset($config['level'])&&is_numeric($config['level'])?$config['level']:3;
if($maxlevel && $result['level']>=$maxlevel){
alert("只能设置 {$maxlevel} 级栏目");
}
}else{
$data['parent'] = 0;
$data['level'] = 1;
}
if($id){
if(is_numeric($id) && ($result=mysql::select_one('folder,level,type','items',"id='{$id}'"))){
if($result['type'] != $data['type']){
if($data['type']!=9){
if(!$data['folder']){
alert('栏目目录名称不能为空');
}else if(!preg_match("/^\w+$/",$data['folder'])){
alert('栏目目录名称必须为英文、数字、下划线等字符');
}
}
}
if($result['folder']!=$data['folder'] && preg_match("/^\w+$/",$result['folder']) && preg_match("/^\w+$/",$data['folder'])){
if($data['folder'] && $data['type']!=9){
$this->create($data['folder']);
}
if($result['folder'] && !mysql::total('items',"folder='{$result['folder']}' AND id!='{$id}'")){
dir::remove(ROOT_PATH.$result['folder']);
}
}
if(mysql::update($data,'items',"id='{$id}'")){
$diff = $result['level']-$data['level'];
if($diff != 0){
$subset = page::items($id, null, 'id,level');
if($subset){
foreach($subset as $v){
mysql::update(array('level'=>$v['level']-$diff),'items',"id='{$v['id']}'");
}
}
}
}
}else{
alert('没有找到该栏目');
}
}else{
if($data['type']!=9){
if(!$data['folder']){
alert('栏目目录名称不能为空');
}else if(!preg_match("/^\w+$/",$data['folder'])){
alert('栏目目录名称必须为英文、数字、下划线等字符');
}else{
$this->create($data['folder']);
}
}
$data['issub'] = 0;
$data['content'] = '';
if(!$id = mysql::insert($data, 'items')){
alert('保存失败');
}
$this->sitemap();
}
alert('操作成功', url::mpf('items','items','edit',array('parent'=>null,'id'=>$id,'success'=>'ok')));
}else{
alert('没有提交信息');
}
}
public function batch()
{
global $G;
if(is_numeric($G['get']['parent']) && $parent=page::items_one($G['get']['parent'])){
if(preg_match('/^(1|2\d?|3\d?|4\d?|5\d?)$/',$parent['type'])){
$data['parent'] = $parent;
}
}
foreach($G['pass']['only'] as $k=>$v){
if(mysql::total('items',"type='{$k}' AND id!='{$G['get']['id']}'".($v?'':' AND lang=lang'))){
unset($G['option']['type'][$k]);
}
}
if($res = page::models('id',"FIND_IN_SET(id,'2,3,4,5') AND display='0'")){
foreach($res as $v){
unset($G['option']['type'][$v['id']]);
}
}
$data['subarr'] = page::items_option('0', '顶级栏目', array(), false);
echo $this->theme('items/batch',$data);
}
public function batchadd()
{
global $G;
$this->cover('items','M');
if(isset($G['post']['id'])){
if(!is_numeric($G['post']['parent']) || !$parent=$G['post']['parent']){
$parent = 0;
}
$contribute = arrOption($models=mysql::select_all('id,contribute,comments','models'),'id','contribute');
$comments = arrOption($models,'id','comments');
foreach($G['post']['id'] as $id){
$data = array(
'name' => $G['post']['name'.$id],
'type' => $G['post']['type'.$id],
'theme' => '',
'themes' => '',
'title' => '',
'keywords' => '',
'description' => '',
'alt' => '',
'head' => 0,
'foot' => 0,
'nofollow' => 0,
'target' => 0,
'sort' => 0,
'weight' => 0,
'display' => 1,
'contribute' => $contribute[$G['post']['type'.$id]]?1:0,
'comments' => $comments[$G['post']['type'.$id]]?1:0,
'static' => '',
'folder' => $G['post']['folder'.$id],
'parent' => $parent,
'link' => $G['post']['link'.$id],
/* 栏目表保留字段 */
'icon' => '',
'image' => '',
'images' => '',
'text' => '',
'container' => '',
/* 栏目表预留字段 */
'icon1' => '',
'image1' => '',
'image2' => '',
'image3' => '',
'text1' => '',
'text2' => '',
'text3' => ''
);
if(mysql::total('models',"id='{$data['type']}' AND display='0'")){
alert($G['option']['type'][$data['type']].'已关闭');
}
if(is_numeric($data['parent']) && $result=mysql::select_one('level','items',"id='{$data['parent']}'")){
$data['level'] = $result['level']+1;
$config = load::config();
$maxlevel = isset($config['level'])&&is_numeric($config['level'])?$config['level']:3;
if($maxlevel && $result['level']>=$maxlevel){
alert("只能设置 {$maxlevel} 级栏目");
}
}else{
$data['parent'] = 0;
$data['level'] = 1;
}
if($data['type']!=9){
if(!$data['folder']){
alert('栏目目录名称不能为空');
}else if(!preg_match("/^\w+$/",$data['folder'])){
alert('栏目目录名称必须为英文、数字、下划线等字符');
}else{
$this->create($data['folder']);
}
}
$data['issub'] = 0;
$data['content'] = '';
if(!$id = mysql::insert($data, 'items')){
alert($data['name'].'保存失败');
}
}
$this->sitemap();
alert('操作成功', url::mpf('items','items','batch',array('success'=>'ok')));
}else{
alert('没有提交信息');
}
}
public function revise()
{
global $G;
$this->cover('items','R');
echo $this->theme('items/revise',$data);
}
public function attrs()
{
global $G;
$this->cover('items','M');
if($G['post'] && $G['get']['id']){
$data = array();
if($G['post']['head']!=-1){
$data['head'] = $G['post']['head']?1:0;
}
if($G['post']['foot']!=-1){
$data['foot'] = $G['post']['foot']?1:0;
}
if($data){
mysql::update($data,'items',"FIND_IN_SET(id,'{$G['get']['id']}')");
alert('操作成功', url::mpf('items','items','revise',array('success'=>'ok')));
}else{
alert('未选择属性设置');
}
}else{
alert('没有提交信息');
}
}
public function delete()
{
global $G;
$this->cover('items','D');
if(isset($G['post']['url']) && isset($G['get']['id'])){
$del = array();
$arr = explode(',',$G['get']['id']);
foreach($arr as $id){
if(is_numeric($id)){
if($result = mysql::select_one('folder','items',"id='{$id}'")){
$del[$id] = $result['folder'];
$res = page::items($id, null, 'id,folder');
if($res){
foreach($res as $v){
$del[$v['id']] = $v['folder'];
}
}
}
}
}
if($del){
$error=array();
foreach($del as $id=>$folder){
if(is_numeric(mysql::delete('items',"id='{$id}'"))){
if(preg_match("/^\w+$/",$folder) && !mysql::total('items',"folder='{$folder}' AND lang=lang")){
$path = ROOT_PATH.$folder.'/';
if(is_dir($path)){
dir::remove($path);
}
}
}else{
$error[]=$id;
}
}
if($error){
alert('ID为'.implode(',',$error).'删除失败');
}else{
$this->sitemap();
alert('删除成功', url::mpf('items','items','init',array('id'=>null)));
}
}else{
alert('没有删除对象id');
}
}
alert('没有提交信息');
}
public function folder()
{
global $G;
$G['cover'] = $this->cover('items');
$id = arrExist($G['get'],'id');
$parent = arrExist($G['get'],'parent');
$folder = arrExist($G['get'],'folder');
if($folder){
if( ($id && is_numeric($id)) || ($parent && is_numeric($parent)) ){
if(!is_numeric($parent)) $parent=$id;
$subarr = page::items(-$parent, null, 'id');
$arr = '0';
foreach($subarr as $v){
$arr .= ','.$v['id'];
}
$subarr = page::items(isset($v['id'])?$v['id']:$parent, null, 'id');
foreach($subarr as $v){
$arr .= ','.$v['id'];
}
if($res = mysql::select_one('name','items',"folder='{$folder}' AND !FIND_IN_SET(id,'{$arr}') AND parent!='{$parent}'")){
alert("该栏目目录已被“{$res['name']}”使用,请重新输入");
}
}else{
if($res = mysql::select_one('name','items',"folder='{$folder}'",'level ASC,id ASC')){
alert("该栏目目录已被“{$res['name']}”使用,请重新输入");
}
}
}
}
public function create($folder)
{
if($folder && preg_match("/^\w+$/",$folder)){
/* 创建文件内容 */
$content = "<?php\n/*\n * Copyright (c) Huyin Information Technology Co., Ltd. All Rights Reserved.\n * BOSSCMS Content Management System (https://www.bosscms.net/)\n */\nrequire '../index.php';\n?>";
return dir::create(ROOT_PATH.$folder.'/index.php', $content);
}
}
}
?>