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 @@