Files

322 lines
10 KiB
PHP

<?php namespace Phpcmf\Controllers\Admin;
// 草稿箱
class Content extends \Phpcmf\Table
{
private $tid;
public function __construct()
{
parent::__construct();
// 支持附表存储
$this->is_data = 0;
// 表单显示名称
$this->name = dr_lang('内容库');
// 字段划分
$j = 0;
$field = [];
for ($i = 1; $i<=9; $i++) {
$field['title_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('标题'),
'fieldname' => 'title_'.$i,
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => '100%',
),
'validate' => array(
'formattr' => ' onblur="dr_wx_show_title('.$i.');"',
)
)
);
$j++;
$field['author_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('作者'),
'fieldname' => 'author_'.$i,
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => 200,
)
)
);
$j++;
$field['thumb_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('封面'),
'fieldtype' => 'File',
'fieldname' => 'thumb_'.$i,
'setting' => array(
'option' => array(
'ext' => 'jpg,png,jpeg,gif',
'size' => 20,
),
)
);
$j++;
$field['description_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('描述'),
'fieldname' => 'description_'.$i,
'fieldtype' => 'Textarea',
'setting' => array(
'option' => array(
'width' => '90%',
'height' => 70,
),
'validate' => array(
'xss' => 1,
),
)
);
$j++;
$field['content_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('内容'),
'fieldtype' => 'Ueditor',
'fieldname' => 'content_'.$i,
'setting' => array(
'option' => array(
'mode' => 1,
'height' => 300,
'width' => '100%',
'mini' => 1,
),
'validate' => [
'tips' => '内容中的图片一定不要太大,否则无法同步到微信服务器'
]
)
);
$j++;
$field['url_'.$i] = array(
'ismain' => 0,
'displayorder' => $j,
'name' => dr_lang('原文地址'),
'fieldname' => 'url_'.$i,
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => '100%',
)
)
);
}
// 初始化数据表
$this->_init([
'table' => weixin_wxtable('content'),
'field' => $field,
'order_by' => 'inputtime desc',
'date_field' => 'inputtime',
]);
\Phpcmf\Service::V()->assign([
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
[
WEIXIN_MORE_NAME.'内容库' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-th-list'],
'添加' => [''.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'],
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-plus'],
'清空附件media_id' => ['ajax:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/clear_del', 'fa fa-file'],
]
),
'myfieldinfo' => $field,
'zt' => [
0 => '发布成功',
1 => '发布中',
2 => '原创失败',
3 => '常规失败',
4 => '平台审核不通过',
5 => '成功后用户删除所有文章',
6 => '成功后系统封禁所有文章',
]
]);
}
public function clear_del() {
\Phpcmf\Service::M()->table(weixin_wxtable('media_id'))->clear_all();
$this->_json(1, '全部附件media_id记录被清空');
}
public function index() {
$where = (string)$_GET['keyword'] ? '`title` LIKE "%'.$_GET['keyword'].'%"' : '';
\Phpcmf\Service::M()->set_where_list($where);
list($tpl) = $this->_list();
\Phpcmf\Service::V()->display($tpl);
}
public function add() {
list($tpl) = $this->_Post();
\Phpcmf\Service::V()->display($tpl);
}
public function edit() {
list($tpl) = $this->_Post(intval(\Phpcmf\Service::L('Input')->get('id')));
\Phpcmf\Service::V()->display($tpl);
}
// 转存素材库
public function module_add() {
$mid = dr_safe_filename($_GET['mid']);
$row = \Phpcmf\Service::M('Module')->table('module')->where('dirname', $mid)->getRow();
if (!$row) {
$this->_json(0, dr_lang('此模块[%s]未安装', $mid));
}
$this->_module_init($mid);
$ids = \Phpcmf\Service::L('input')->get('ids');
if (!$ids) {
$this->_json(0, dr_lang('所选内容不存在'));
} elseif (dr_count($ids) > 9) {
$this->_json(0, dr_lang('微信素材超过9条数据'));
}
$n = 1;
$save = [
'tid' => 'index',
'title' => 'index',
'content' => [],
'media_id' => '',
'inputtime' => SYS_TIME,
];
$save['media_id'] = '';
$save['publish_id'] = '';
$save['article_id'] = '';
$save['status'] = 1;
foreach ($ids as $id) {
$data = $this->content_model->get_data($id);
if ($data) {
$save['content']['title_'.$n] = $data['title'];
$save['content']['thumb_'.$n] = $data['thumb'];
$save['content']['author_'.$n] = $data['author'];
$save['content']['content_'.$n] = $data['content'];
$save['content']['description_'.$n] = $data['description'];
$save['content']['url_'.$n] = dr_url_prefix($data['url'], $mid);
$n++;
}
}
$save['nums'] = $n;
$save['title'] = $save['content']['title_1'];
$save['content'] = dr_array2string($save['content']);
\Phpcmf\Service::M()->table(weixin_wxtable('content'))->insert($save);
$this->_json(1, '存储成功,请到微信草稿中编辑发布');
}
/**
* 获取内容
* */
protected function _Data($id = 0) {
$data = parent::_Data($id);
if (!$data) {
return [];
}
$value = dr_string2array($data['content']);
return $value;
}
// 格式化保存数据
protected function _Format_Data($id, $data, $old) {
!$data[0]['title_1'] && $this->_json(0, '第一个标题不能为空', ['field' => 'title_1']);
!$data[0]['content_1'] && $this->_json(0, '第一个内容不能为空', ['field' => 'content_1']);
$nums = 0;
for ($i = 1; $i<=9; $i++) {
if ($data[0]['title_'.$i]) {
$nums++;
} else {
break;
}
}
$save = [
'tid' => '',
'nums' => $nums,
'title' => $data[0]['title_1'],
'content' => dr_array2string($data[0]),
'inputtime' => SYS_TIME,
];
// 每次修改媒体id重置
$save['media_id'] = '';
$save['publish_id'] = '';
$save['article_id'] = '';
$save['status'] = 1;
return $save;
}
// 保存后
protected function _Save($id = 0, $data = [], $old = [], $before = null, $after = null) {
return parent::_Save($id, $data, $old, $before, function($id, $data, $old) {
$content = dr_string2array($data['content']);
for ($i = 1; $i <=9; $i++) {
if (!$content['url_'.$i]) {
$content['url_'.$i] = SITE_URL.'index.php?s=weixin&c=show&id='.$id.'&p='.$i;
}
}
\Phpcmf\Service::M()->table(weixin_wxtable('content'))->update($id, [
'content' => dr_array2string($content),
]);
});
}
//
public function del() {
$this->_Del(
\Phpcmf\Service::L('Input')->get_post_ids(),
null,
null,
\Phpcmf\Service::M()->dbprefix($this->init['table'])
);
}
//
public function sync_add() {
$ids = \Phpcmf\Service::L('Input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选数据不存在'));
}
$rt = weixin_get_access_token();
if (!$rt['code']) {
$this->_json(0, $rt['msg']);
}
$access_token = $rt['msg'];
$rows = \Phpcmf\Service::M()->init($this->init)->where_in('id', $ids)->getAll();
if (!$rows) {
$this->_json(0, dr_lang('所选数据不存在'));
}
foreach ($rows as $t) {
if (!$t['article_id']) {
$rt = \Phpcmf\Service::M('Weixin', 'Weixin')->sync_content($access_token, $t);
if (!$rt['code']) {
$this->_json(0, $rt['msg']);
}
}
}
$this->_json(1, '提交成功,等待平台审核');
}
}