Initial project files: BESCMS full source
This commit is contained in:
@@ -0,0 +1,321 @@
|
||||
<?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, '提交成功,等待平台审核');
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user