diff --git a/application/wechat/controller/News.php b/application/wechat/controller/News.php index ed0d6f275..dc9c268e3 100644 --- a/application/wechat/controller/News.php +++ b/application/wechat/controller/News.php @@ -47,11 +47,39 @@ class News extends BasicAdmin { return parent::_list($db); } + /** + * 图文选择器 + * @return string + */ + public function select() { + $this->index(); + } + + /** + * 媒体资源显示 + * @return array + */ + public function image() { + $_GET['rows'] = 18; + $this->assign('field', $this->request->get('field', 'local_url')); + return $this->_list(Db::name('WechatNewsMedia')->where('type', 'image')); + } + /** * 图文列表数据处理 * @param $data */ - protected function _data_filter(&$data) { + protected function _index_data_filter(&$data) { + foreach ($data as &$vo) { + $vo = WechatService::getNewsById($vo['id']); + } + } + + /** + * 图文列表数据处理 + * @param $data + */ + protected function _select_data_filter(&$data) { foreach ($data as &$vo) { $vo = WechatService::getNewsById($vo['id']); } @@ -132,14 +160,6 @@ class News extends BasicAdmin { $this->error("图文删除失败, 请稍候再试!"); } - /** - * 图文选择器 - * @return string - */ - public function select() { - $this->index(); - } - /** * 推荐图文 * @return array|void @@ -200,11 +220,10 @@ class News extends BasicAdmin { * @return boolean */ private function _uploadWechatNews(&$newsinfo) { - $self = $this; foreach ($newsinfo['articles'] as &$article) { $article['thumb_media_id'] = WechatService::uploadForeverMedia($article['local_url']); - $article['content'] = preg_replace_callback("//i", function ($matches) use ($self) { - $src = $self->_filterWechatImage($matches[2]); + $article['content'] = preg_replace_callback("//i", function ($matches) { + $src = WechatService::uploadImage($matches[2]); return ""; }, htmlspecialchars_decode($article['content'])); } @@ -215,38 +234,10 @@ class News extends BasicAdmin { $result = $wechat->uploadForeverArticles(['articles' => $newsinfo['articles']]); if (isset($result['media_id'])) { $newsinfo['media_id'] = $result['media_id']; - return Db::name('WechatNews')->where('id', $newsinfo['id'])->update(['media_id' => $result['media_id']]); + return Db::name('WechatNews')->where('id', $newsinfo['id'])->setField('media_id', $result['media_id']); } Log::error("上传永久图文失败, {$wechat->errMsg}[{$wechat->errCode}]"); return false; } - /** - * 文章内容图片处理 - * @param string $local_url - * @return string|null - */ - private function _filterWechatImage($local_url = '') { - # 检测图片是否已经上传过了 - $img = Db::name('WechatNewsImage')->where('local_url', $local_url)->find(); - if (!empty($img) && isset($img['media_url'])) { - return $img['media_url']; - } - # 下载临时文件到本地 - $filename = 'wechat/image/' . join('/', str_split(md5($local_url), 16)) . '.' . strtolower(pathinfo($local_url, 4)); - $result = FileService::local($filename, file_get_contents($local_url)); - if ($result && isset($result['file'])) { - # 上传图片到微信服务器 - $wechat = &load_wechat('media'); - $mediainfo = $wechat->uploadImg(['media' => "@{$result['file']}"]); - if (!empty($mediainfo)) { - $data = ['local_url' => $local_url, 'media_url' => $mediainfo['url'], 'md5' => md5($local_url)]; - Db::name('WechatNewsImage')->insert($data); - return $mediainfo['url']; - } - } - Log::error("图片上传失败,请稍后再试!{$wechat->errMsg}[{$wechat->errCode}]"); - return null; - } - } diff --git a/application/wechat/view/news.form.html b/application/wechat/view/news.form.html index 513fa12da..a0e09a813 100644 --- a/application/wechat/view/news.form.html +++ b/application/wechat/view/news.form.html @@ -64,6 +64,7 @@

上传图片 + 选择图片