You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
451 lines
18 KiB
451 lines
18 KiB
<?php
|
|
namespace app\admin\controller;
|
|
use think\Db;
|
|
use think\facade\Request;
|
|
use clt\Form;
|
|
use app\admin\model\Tags as Tags;
|
|
class EmptyController extends Common{
|
|
protected $dao,$fields;
|
|
public function initialize()
|
|
{
|
|
parent::initialize();
|
|
$this->moduleid = $this->mod[MODULE_NAME];
|
|
$this->dao = db(MODULE_NAME);
|
|
$fields = cache($this->moduleid.'_Field');
|
|
foreach($fields as $key => $res){
|
|
$res['setup']=string2array($res['setup']);
|
|
$this->fields[$key]=$res;
|
|
}
|
|
unset($fields);
|
|
unset($res);
|
|
$this->assign ('fields',$this->fields);
|
|
}
|
|
public function index(){
|
|
if(Request::isAjax()){
|
|
$request = Request::instance();
|
|
$modelname = strtolower($request->controller());
|
|
$model = db($modelname);
|
|
$keyword=input('post.key');
|
|
$page =input('page')?input('page'):1;
|
|
$pageSize =input('limit')?input('limit'):config('pageSize');
|
|
$order = "sort asc,id desc";
|
|
if (input('post.catid')) {
|
|
$catids = db('category')->where(array('pid'=>input('post.catid')))->column('id');
|
|
if($catids){
|
|
$catid = input('post.catid').','.implode(',',$catids);
|
|
}else{
|
|
$catid = input('post.catid');
|
|
}
|
|
}
|
|
$cinfo= db('category')->where(array('id'=>input('post.catid')))->field('catdir,is_show')->find();
|
|
if(!empty($keyword) ){
|
|
$map[]=array('title','like','%'.$keyword.'%');
|
|
}
|
|
$prefix=config('database.prefix');
|
|
$Fields=Db::getConnection()->getFields($prefix.$modelname);
|
|
foreach ($Fields as $k=>$v){
|
|
$field[$k] = $k;
|
|
}
|
|
if(in_array('catid',$field)){
|
|
$map[]=array('catid','in',$catid);
|
|
}
|
|
$list = $model
|
|
->where($map)
|
|
->order($order)
|
|
->paginate(array('list_rows'=>$pageSize,'page'=>$page))
|
|
->toArray();
|
|
$rsult['code'] = 0;
|
|
$rsult['msg'] = "获取成功";
|
|
$lists = $list['data'];
|
|
foreach ($lists as $k=>$v ){
|
|
$lists[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
|
|
$lists[$k]['catdir'] = $cinfo['catdir'];
|
|
$lists[$k]['is_show'] = $cinfo['is_show'];
|
|
$lists[$k]['url'] = url('home/'.$cinfo['catdir'].'/info',['id'=>$v['id'],'catId'=>$v['catid']]);
|
|
}
|
|
$rsult['data'] = $lists;
|
|
$rsult['count'] = $list['total'];
|
|
$rsult['rel'] = 1;
|
|
return $rsult;
|
|
}else{
|
|
return $this->fetch ('content/index');
|
|
}
|
|
}
|
|
|
|
public function edit(){
|
|
$id = input('id');
|
|
$request = Request::instance();
|
|
$controllerName = $request->controller();
|
|
if($controllerName=='Page'){
|
|
$p = $this->dao->where('id',$id)->find();
|
|
if(empty($p)){
|
|
$data['id']=$id;
|
|
$data['title'] = $this->categorys[$id]['catname'];
|
|
$data['keywords'] = $this->categorys[$id]['keywords'];
|
|
$this->dao->insert($data);
|
|
}
|
|
}
|
|
$info = $this->dao->where('id',$id)->find();
|
|
$form=new Form($info);
|
|
$returnData['vo'] = $info;
|
|
$returnData['form'] = $form;
|
|
$this->assign ('info', $info );
|
|
$this->assign ( 'form', $form );
|
|
$this->assign ( 'title', '编辑内容' );
|
|
return $this->fetch('content/edit');
|
|
}
|
|
function update(){
|
|
$request = Request::instance();
|
|
|
|
$controllerName = $request->controller();
|
|
$model = $this->dao;
|
|
$fields = $this->fields;
|
|
$data = $this->checkfield($fields,Request::except('file'));
|
|
if(isset($data['code'])){
|
|
return ['code'=>0,'msg'=>$data['msg']];
|
|
}
|
|
if(isset($fields['updatetime'])) {
|
|
$data['userid'] = session('aid');
|
|
}
|
|
|
|
if(isset($fields['updatetime'])) {
|
|
$data['updatetime'] = time();
|
|
}
|
|
|
|
$title_style ='';
|
|
if (isset($data['style_color'])) {
|
|
$title_style .= 'color:' . $data['style_color'].';';
|
|
unset($data['style_color']);
|
|
}else{
|
|
$title_style .= 'color:#222;';
|
|
}
|
|
if (isset($data['style_bold'])) {
|
|
$title_style .= 'font-weight:' . $data['style_bold'].';';
|
|
unset($data['style_bold']);
|
|
}else{
|
|
$title_style .= 'font-weight:normal;';
|
|
}
|
|
if($fields['title']['setup']['style']==1) {
|
|
$data['title_style'] = $title_style;
|
|
}
|
|
if($controllerName!='Page') {
|
|
$data['updatetime'] = time();
|
|
}
|
|
unset($data['aid']);
|
|
unset($data['pics_name']);
|
|
//编辑多图和多文件
|
|
foreach ($fields as $k=>$v){
|
|
if($v['type']=='files' ){
|
|
if(!$data[$k]){
|
|
$data[$k]='';
|
|
}
|
|
$data[$v['field']] = $data['images'];
|
|
}
|
|
if($v['type']=='images'){
|
|
if(!isset($data[$k])){
|
|
$data[$k]='';
|
|
}
|
|
if($data[$k]){
|
|
$data[$v['field']] = implode(';',$data[$k]);
|
|
}
|
|
}
|
|
}
|
|
$list=$model->strict(false)->update($data);
|
|
if (false !== $list) {
|
|
if($controllerName=='Page'){
|
|
$result['url'] = url("admin/category/index");
|
|
}else{
|
|
$result['url'] = url("admin/".$controllerName."/index",array('catid'=>$data['catid']));
|
|
}
|
|
//标签
|
|
if(isset($data['tags'])){
|
|
$tags = array_filter(explode(',', $data['tags']));
|
|
if ($tags) {
|
|
$tagsId = Db::name('article_tags')->where('article_id',$data['id'])->column('tag_id');
|
|
if($tagsId){
|
|
//如果存在,则全部删除后,重新添加
|
|
//统计减1
|
|
Tags::where('id', 'in', $tagsId)->setDec('nums');
|
|
//删除全部
|
|
Db::name('article_tags')->where('article_id',$data['id'])->delete();
|
|
//重新添加
|
|
foreach ($tags as $k => $v) {
|
|
$info = Tags::where('name', $v)->find();
|
|
if($info){
|
|
Tags::where('name', $v)->setInc('nums');
|
|
$data3['tag_id'] = $info['id'];
|
|
}else{
|
|
$data2 = ['name' => $v, 'nums' => 1];
|
|
$data3['tag_id'] = model('tags')->insertGetId($data2);
|
|
}
|
|
$data3['article_id'] = $data['id'];
|
|
Db::name('article_tags')->insert($data3);
|
|
}
|
|
}else{
|
|
//如果不存在
|
|
$tagslist = Tags::where('name', 'in', $tags)->select();
|
|
if(count($tagslist)>0){
|
|
foreach ($tagslist as $k => $v) {
|
|
$data3['tag_id'] = $v['id'];
|
|
$data3['article_id'] = $data['id'];
|
|
Db::name('article_tags')->insert($data3);
|
|
$v->nums++;
|
|
$v->save();
|
|
$tags = array_diff($tags, [$v['name']]);
|
|
}
|
|
foreach ($tags as $k => $v) {
|
|
$data2 = ['name' => $v, 'nums' => 1];
|
|
$data3['tag_id'] = model('tags')->insertGetId($data2);
|
|
$data3['article_id'] = $data['id'];
|
|
Db::name('article_tags')->insert($data3);
|
|
}
|
|
}else{
|
|
foreach ($tags as $k => $v) {
|
|
$data2 = ['name' => $v, 'nums' => 1];
|
|
$data3['tag_id'] = model('tags')->insertGetId($data2);
|
|
$data3['article_id'] = $data['id'];
|
|
Db::name('article_tags')->insert($data3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$result['msg'] = '修改成功!';
|
|
$result['code'] = 1;
|
|
return $result;
|
|
} else {
|
|
$result['msg'] = '修改失败!';
|
|
$result['code'] = 0;
|
|
return $result;
|
|
}
|
|
}
|
|
public function set_categorys($categorys = array()) {
|
|
if (is_array($categorys) && !empty($categorys)) {
|
|
foreach ($categorys as $id => $c) {
|
|
$this->categorys[$c['id']] = $c;
|
|
$r = db('category')->where("pid = $c[id]")->order('listorder ASC,id ASC')->select();
|
|
$this->set_categorys($r);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
function checkfield($fields,$post){
|
|
foreach ( $post as $key => $val ) {
|
|
if(isset($fields[$key])){
|
|
$setup=$fields[$key]['setup'];
|
|
if(!empty($fields[$key]['required']) && empty($post[$key])){
|
|
$result['msg'] = $fields[$key]['errormsg']?$fields[$key]['errormsg']:'缺少必要参数!';
|
|
$result['code'] = 0;
|
|
return $result;
|
|
}
|
|
if(isset($setup['multiple'])){
|
|
if(is_array($post[$key])){
|
|
$post[$key] = implode(',',$post[$key]);
|
|
}
|
|
}
|
|
if(isset($setup['inputtype'])){
|
|
if($setup['inputtype']=='checkbox'){
|
|
$post[$key] = implode(',',$post[$key]);
|
|
}
|
|
}
|
|
if(isset($setup['fieldtype'])){
|
|
if($fields[$key]['type']=='checkbox'){
|
|
$post[$key] = implode(',',$post[$key]);
|
|
}
|
|
}
|
|
if($fields[$key]['type']=='datetime'){
|
|
$post[$key] =strtotime($post[$key]);
|
|
}elseif($fields[$key]['type']=='textarea'){
|
|
$post[$key]=addslashes($post[$key]);
|
|
}elseif($fields[$key]['type']=='linkage'){
|
|
if($post[$key][0]){
|
|
$post[$key] = implode(',',$post[$key]);
|
|
}else{
|
|
unset($post[$key]);
|
|
}
|
|
}elseif($fields[$key]['type']=='editor'){
|
|
if(isset($post['add_description']) && $post['description'] == '' && isset($post['content'])) {
|
|
$content = stripslashes($post['content']);
|
|
$description_length = intval($post['description_length']);
|
|
$post['description'] = str_cut(str_replace(array("\r\n","\t",'[page]','[/page]','“','”'), '', strip_tags($content)),$description_length);
|
|
$post['description'] = addslashes($post['description']);
|
|
}
|
|
if(isset($post['auto_thumb']) && $post['thumb'] == '' && isset($post['content'])) {
|
|
$content = $content ? $content : stripslashes($post['content']);
|
|
$auto_thumb_no = intval($post['auto_thumb_no']) * 3;
|
|
if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) {
|
|
$post['thumb'] = $matches[$auto_thumb_no][0];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $post;
|
|
}
|
|
|
|
public function add(){
|
|
$form=new Form();
|
|
$this->assign ( 'form', $form );
|
|
$this->assign ( 'title', '添加内容' );
|
|
return $this->fetch('content/edit');
|
|
}
|
|
public function insert(){
|
|
$request = Request::instance();
|
|
$controllerName = $request->controller();
|
|
$model = $this->dao;
|
|
$fields = $this->fields;
|
|
$data = $this->checkfield($fields,Request::except('file'));
|
|
if(isset($data['code']) && $data['code']==0){
|
|
return $data;
|
|
}
|
|
if(isset($fields['createtime']) && !isset($data['createtime']) ){
|
|
$data['createtime'] = time();
|
|
}
|
|
if(isset($fields['updatetime']) && !isset($data['updatetime']) ) {
|
|
$data['updatetime'] = time();
|
|
}
|
|
if($controllerName!='Page') {
|
|
if (isset($fields['updatetime'])){
|
|
$data['updatetime'] = $data['createtime'];
|
|
}
|
|
}
|
|
$data['userid'] = session('aid');
|
|
$data['username'] = session('username');
|
|
|
|
$title_style ='';
|
|
if (isset($data['style_color'])) {
|
|
$title_style .= 'color:' . $data['style_color'].';';
|
|
unset($data['style_color']);
|
|
}else{
|
|
$title_style .= 'color:#222;';
|
|
}
|
|
if (isset($data['style_bold'])) {
|
|
$title_style .= 'font-weight:' . $data['style_bold'].';';
|
|
unset($data['style_bold']);
|
|
}else{
|
|
$title_style .= 'font-weight:normal;';
|
|
}
|
|
if($fields['title']['setup']['style']==1) {
|
|
$data['title_style'] = $title_style;
|
|
}
|
|
|
|
unset($data['style_color']);
|
|
unset($data['style_bold']);
|
|
unset($data['aid']);
|
|
unset($data['pics_name']);
|
|
//编辑多图和多文件
|
|
foreach ($fields as $k=>$v){
|
|
if($v['type']=='files' ){
|
|
if(!$data[$k]){
|
|
$data[$k]='';
|
|
}
|
|
$data[$v['field']] = $data['images'];
|
|
}
|
|
if($v['type']=='images'){
|
|
if(!isset($data[$k])){
|
|
$data[$k]='';
|
|
}
|
|
if($data[$k]){
|
|
$data[$v['field']] = implode(';',$data[$k]);
|
|
}
|
|
}
|
|
}
|
|
$id= $model->insertGetId($data);
|
|
if ($id !==false) {
|
|
if($controllerName=='page'){
|
|
$result['url'] = url("admin/category/index");
|
|
}else{
|
|
$result['url'] = url("admin/".$controllerName."/index",array('catid'=>$data['catid']));
|
|
}
|
|
|
|
//标签
|
|
if(isset($data['tags'])){
|
|
$tags = array_filter(explode(',', $data['tags']));
|
|
if ($tags) {
|
|
$tagslist = Tags::where('name', 'in', $tags)->select();
|
|
if(count($tagslist)>0){
|
|
foreach ($tagslist as $k => $v) {
|
|
$data3['tag_id'] = $v['id'];
|
|
$data3['article_id'] = $id;
|
|
Db::name('article_tags')->insert($data3);
|
|
$v->nums++;
|
|
$v->save();
|
|
$tags = array_diff($tags, [$v['name']]);
|
|
}
|
|
foreach ($tags as $k => $v) {
|
|
$data2 = ['name' => $v, 'nums' => 1];
|
|
$data3['tag_id'] = model('tags')->insertGetId($data2);
|
|
$data3['article_id'] = $id;
|
|
Db::name('article_tags')->insert($data3);
|
|
}
|
|
}else{
|
|
foreach ($tags as $k => $v) {
|
|
$data2 = ['name' => $v, 'nums' => 1];
|
|
$data3['tag_id'] = model('tags')->insertGetId($data2);
|
|
$data3['article_id'] = $id;
|
|
Db::name('article_tags')->insert($data3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$result['msg'] = '添加成功!';
|
|
$result['code'] = 1;
|
|
return $result;
|
|
} else {
|
|
$result['msg'] = '添加失败!';
|
|
$result['code'] = 0;
|
|
return $result;
|
|
}
|
|
|
|
}
|
|
public function listDel(){
|
|
$id = input('post.id');
|
|
$model = $this->dao;
|
|
$model->where(array('id'=>$id))->delete();//转入回收站
|
|
return ['code'=>1,'msg'=>'删除成功!'];
|
|
}
|
|
public function delAll(){
|
|
$map[] =array('id','in',input('post.ids/a'));
|
|
$model = $this->dao;
|
|
$model->where($map)->delete();
|
|
$result['code'] = 1;
|
|
$result['msg'] = '删除成功!';
|
|
$result['url'] = url('index',array('catid'=>input('post.catid')));
|
|
return $result;
|
|
}
|
|
public function listorder(){
|
|
$model = $this->dao;
|
|
$catid = input('catid');
|
|
$data = input('post.');
|
|
$model->update($data);
|
|
$result = ['msg' => '排序成功!','url'=>url('index',array('catid'=>$catid)), 'code' => 1];
|
|
return $result;
|
|
}
|
|
public function delImg(){
|
|
if(!input('post.url')){
|
|
return ['code'=>0,'请指定要删除的图片资源'];
|
|
}
|
|
$file = ROOT_PATH.__PUBLIC__.input('post.url');
|
|
if(file_exists($file) && trim(input('post.url'))!=''){
|
|
is_dir($file) ? dir_delete($file) : unlink($file);
|
|
}
|
|
if(input('post.id')){
|
|
$picurl = input('post.picurl');
|
|
$picurlArr = explode(':',$picurl);
|
|
$pics = substr(implode(":::",$picurlArr),0,-3);
|
|
$model = $this->dao;
|
|
$map['id'] =input('post.id');
|
|
$model->where($map)->update(array('pics'=>$pics));
|
|
}
|
|
$result['msg'] = '删除成功!';
|
|
$result['code'] = 1;
|
|
return $result;
|
|
}
|
|
public function getRegion(){
|
|
$Region=db("region");
|
|
$map['pid'] = input("pid");
|
|
$list=$Region->where($map)->select();
|
|
return $list;
|
|
}
|
|
}
|