| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <?phpdeclare(strict_types=1);/** * +---------------------------------------------------------------------- * 后台文章控制制器 * @author huwhis@163.com * @version   0.0.1 * +---------------------------------------------------------------------- */namespace app\controller\sys;// 引入框架内置类use app\facade\FileFacade;use think\Exception;use think\facade\Db;use think\facade\Config;use think\facade\View;use app\model\Category as CategoryModel;use app\model\Article as ArticleModel;use app\facade\FileUtils;use app\utils\ReUtils;use app\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 = FileFacade::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();    }}
 |