<?php // +---------------------------------------------------------------------- // | bronet [ 以客户为中心 以奋斗者为本 ] // +---------------------------------------------------------------------- // | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: 老猫 <bronet@126.com> // +---------------------------------------------------------------------- namespace app\portal\controller; use cmf\controller\AdminBaseController; use app\portal\model\PortalPostModel; use app\portal\service\PostService; use app\portal\model\PortalCategoryModel; use think\Db; use app\admin\model\ThemeModel; class AdminArticleController extends AdminBaseController { /** * 文章列表 * @adminMenu( * 'name' => '文章管理', * 'parent' => 'portal/AdminIndex/default', * 'display'=> true, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章列表', * 'param' => '' * ) */ public function index() { $param = $this->request->param(); $categoryId = $this->request->param('category', 0, 'intval'); $postService = new PostService(); $data = $postService->adminArticleList($param); $data->appends($param); $portalCategoryModel = new PortalCategoryModel(); $categoryTree = $portalCategoryModel->adminCategoryTree($categoryId); $this->assign('start_time', isset($param['start_time']) ? $param['start_time'] : ''); $this->assign('end_time', isset($param['end_time']) ? $param['end_time'] : ''); $this->assign('keyword', isset($param['keyword']) ? $param['keyword'] : ''); $this->assign('articles', $data->items()); $this->assign('category_tree', $categoryTree); $this->assign('category', $categoryId); $this->assign('page', $data->render()); return $this->fetch(); } /** * 添加文章 * @adminMenu( * 'name' => '添加文章', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '添加文章', * 'param' => '' * ) */ public function add() { $themeModel = new ThemeModel(); $articleThemeFiles = $themeModel->getActionThemeFiles('portal/Article/index'); $this->assign('article_theme_files', $articleThemeFiles); return $this->fetch(); } /** * 添加文章提交 * @adminMenu( * 'name' => '添加文章提交', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '添加文章提交', * 'param' => '' * ) */ public function addPost() { if ($this->request->isPost()) { $data = $this->request->param(); $post = $data['post']; $result = $this->validate($post, 'AdminArticle'); if ($result !== true) { $this->error($result); } $portalPostModel = new PortalPostModel(); if (!empty($data['photo_names']) && !empty($data['photo_urls'])) { $data['post']['more']['photos'] = []; foreach ($data['photo_urls'] as $key => $url) { $photoUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]); } } if (!empty($data['file_names']) && !empty($data['file_urls'])) { $data['post']['more']['files'] = []; foreach ($data['file_urls'] as $key => $url) { $fileUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]); } } $portalPostModel->adminAddArticle($data['post'], $data['post']['categories']); $data['post']['id'] = $portalPostModel->id; $hookParam = [ 'is_add' => true, 'article' => $data['post'] ]; hook('portal_admin_after_save_article', $hookParam); $this->success('添加成功!', url('AdminArticle/edit', ['id' => $portalPostModel->id])); } } /** * 编辑文章 * @adminMenu( * 'name' => '编辑文章', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '编辑文章', * 'param' => '' * ) */ public function edit() { $id = $this->request->param('id', 0, 'intval'); $portalPostModel = new PortalPostModel(); $post = $portalPostModel->where('id', $id)->find(); $postCategories = $post->categories()->alias('a')->column('a.name', 'a.id'); $postCategoryIds = implode(',', array_keys($postCategories)); $themeModel = new ThemeModel(); $articleThemeFiles = $themeModel->getActionThemeFiles('portal/Article/index'); $this->assign('article_theme_files', $articleThemeFiles); $this->assign('post', $post); $this->assign('post_categories', $postCategories); $this->assign('post_category_ids', $postCategoryIds); return $this->fetch(); } /** * 编辑文章提交 * @adminMenu( * 'name' => '编辑文章提交', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '编辑文章提交', * 'param' => '' * ) */ public function editPost() { if ($this->request->isPost()) { $data = $this->request->param(); $post = $data['post']; $result = $this->validate($post, 'AdminArticle'); if ($result !== true) { $this->error($result); } $portalPostModel = new PortalPostModel(); if (!empty($data['photo_names']) && !empty($data['photo_urls'])) { $data['post']['more']['photos'] = []; foreach ($data['photo_urls'] as $key => $url) { $photoUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['photos'], ["url" => $photoUrl, "name" => $data['photo_names'][$key]]); } } if (!empty($data['file_names']) && !empty($data['file_urls'])) { $data['post']['more']['files'] = []; foreach ($data['file_urls'] as $key => $url) { $fileUrl = cmf_asset_relative_url($url); array_push($data['post']['more']['files'], ["url" => $fileUrl, "name" => $data['file_names'][$key]]); } } $portalPostModel->adminEditArticle($data['post'], $data['post']['categories']); $hookParam = [ 'is_add' => false, 'article' => $data['post'] ]; hook('portal_admin_after_save_article', $hookParam); $this->success('保存成功!'); } } /** * 文章删除 * @adminMenu( * 'name' => '文章删除', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章删除', * 'param' => '' * ) */ public function delete() { $param = $this->request->param(); $portalPostModel = new PortalPostModel(); if (isset($param['id'])) { $id = $this->request->param('id', 0, 'intval'); $result = $portalPostModel->where(['id' => $id])->find(); $data = [ 'object_id' => $result['id'], 'create_time' => time(), 'table_name' => 'portal_post', 'name' => $result['post_title'] ]; $resultPortal = $portalPostModel ->where(['id' => $id]) ->update(['delete_time' => time()]); if ($resultPortal) { Db::name('portal_category_post')->where(['post_id'=>$id])->update(['status'=>0]); Db::name('portal_tag_post')->where(['post_id'=>$id])->update(['status'=>0]); Db::name('recycleBin')->insert($data); } $this->success("删除成功!", ''); } if (isset($param['ids'])) { $ids = $this->request->param('ids/a'); $recycle = $portalPostModel->where(['id' => ['in', $ids]])->select(); $result = $portalPostModel->where(['id' => ['in', $ids]])->update(['delete_time' => time()]); if ($result) { foreach ($recycle as $value) { $data = [ 'object_id' => $value['id'], 'create_time' => time(), 'table_name' => 'portal_post', 'name' => $value['post_title'] ]; Db::name('recycleBin')->insert($data); } $this->success("删除成功!", ''); } } } /** * 文章发布 * @adminMenu( * 'name' => '文章发布', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章发布', * 'param' => '' * ) */ public function publish() { $param = $this->request->param(); $portalPostModel = new PortalPostModel(); if (isset($param['ids']) && isset($param["yes"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['post_status' => 1, 'published_time' => time()]); $this->success("发布成功!", ''); } if (isset($param['ids']) && isset($param["no"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['post_status' => 0]); $this->success("取消发布成功!", ''); } } /** * 文章置顶 * @adminMenu( * 'name' => '文章置顶', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章置顶', * 'param' => '' * ) */ public function top() { $param = $this->request->param(); $portalPostModel = new PortalPostModel(); if (isset($param['ids']) && isset($param["yes"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['is_top' => 1]); $this->success("置顶成功!", ''); } if (isset($_POST['ids']) && isset($param["no"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['is_top' => 0]); $this->success("取消置顶成功!", ''); } } /** * 文章推荐 * @adminMenu( * 'name' => '文章推荐', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章推荐', * 'param' => '' * ) */ public function recommend() { $param = $this->request->param(); $portalPostModel = new PortalPostModel(); if (isset($param['ids']) && isset($param["yes"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['recommended' => 1]); $this->success("推荐成功!", ''); } if (isset($param['ids']) && isset($param["no"])) { $ids = $this->request->param('ids/a'); $portalPostModel->where(['id' => ['in', $ids]])->update(['recommended' => 0]); $this->success("取消推荐成功!", ''); } } /** * 文章排序 * @adminMenu( * 'name' => '文章排序', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '文章排序', * 'param' => '' * ) */ public function listOrder() { parent::listOrders(Db::name('portal_category_post')); $this->success("排序更新成功!", ''); } public function move() { } public function copy() { } }