123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- declare(strict_types=1);
- /**
- * +----------------------------------------------------------------------
- * 后台文章控制制器
- * @author huwhis@163.com
- * @version 0.0.1
- * +----------------------------------------------------------------------
- */
- namespace app\sys\controller;
- // 引入框架内置类
- use think\Exception;
- use think\facade\Db;
- use think\facade\Config;
- use think\facade\View;
- use app\common\model\Category as CategoryModel;
- use app\common\model\Article as ArticleModel;
- use app\common\facade\FileUtils;
- use app\common\utils\ReUtils;
- use app\common\model\FileManager as FileManagerModel;
- class Article extends Base
- {
- protected $modelName = "Article";
- public function index()
- {
- $categories = CategoryModel::select();
- $category_tree = list_tree($categories);
- $cid = $this->app->request->param('cid');
- $params = $this->app->request->param();
- $list = ArticleModel::queryPage($params);
- View::assign([
- 'category_tree' => $category_tree,
- 'list' => $list,
- 'cid' => $cid
- ]);
- return View::fetch();
- }
- public function save($content_type = 0, $id = 0)
- {
- if ($this->app->request->isPost()) {
- $params = $this->app->request->param();
- if (!$params['cid']) {
- $this->error('请选择栏目');
- }
- if ($params['title'] == '') {
- $this->error("标题不能为空");
- }
- $params['content'] = isset($params['content']) ? $params['content'] : '';
- if ($content_type == 0) {
- $username = $this->getSysUser()->username;
- $params['content'] = $this->saveRomteImage($params['content'], (int)$params['id'], (int) $params['cjid'], $username);
- }
- $params['keywords'] = trim($params['keywords']);
- try {
- if ($params['id'] != 0) {
- ArticleModel::update($params);
- } else {
- $params['userid'] = $this->getSysUser()->userid;
- $params['username'] = $this->getSysUser()->nickname;
- unset($params['id']);
- ArticleModel::create($params);
- }
- } catch (\Exception $e) {
- $msg = $e->getMessage();
- $this->error("错误提示:" . $msg);
- }
- $this->success('操作成功', (string) url('index?cid=' . $params['cid']));
- } else {
- if ($id) {
- $data = ArticleModel::find($id);
- } else {
- $data = new ArticleModel();
- $data->content_type = $content_type;
- }
- $data->cjid = time();
- $categories = CategoryModel::field('id, parent_id, name')->select();
- View::assign('category_tree', list_tree($categories));
- View::assign('data', $data);
- $template = $content_type ? 'savemd' : 'save';
- return View::fetch($template);
- }
- }
- protected function saveRomteImage($content, $infoid = 0, $cjid = 0, $username = 'system')
- {
- $content = stripslashes($content);
- $img_array = [];
- // 匹配所有远程图片
- $pattern = '/src="(http[s]:\/\/.*)"/isU';
- preg_match_all($pattern, $content, $img_array);
- // 删除重复 url
- $img_arrays = array_unique($img_array[1]);
- foreach ($img_arrays as $value) {
- $file = FileUtils::downloadUrlImg($value);
- $savename = \think\facade\Filesystem::disk('public')->putFile('/', $file);
- FileManagerModel::saveFileInfo($file, $savename, $file->getOriginalName, $infoid, $cjid, $username);
- // 删除临时文件
- @unlink($file->getRealPath());
- $filename = Config::get('filesystem.disks.public.url') . '/' . str_replace('\\', '/', $savename);
- // dump($filename);
- $content = str_replace($value, $filename, $content);
- }
- return $content;
- }
- public function move()
- {
- $ids = $this->request->param('ids');
- $cid = $this->request->param('cid');
- $tablename = ArticleModel::getTable();
- $idss = implode(',', $ids);
- $sql = "update " . $tablename . " set cid=". $cid ." where id IN (" . $idss . ");";
- try {
- Db::execute($sql);
- } catch (Exception $e) {
- return ReUtils::error();
- }
- return ReUtils::success();
- }
- }
|