Initial project files: BESCMS full source
This commit is contained in:
@@ -0,0 +1,236 @@
|
||||
<?php namespace Phpcmf\Controllers;
|
||||
|
||||
class Api extends \Phpcmf\App
|
||||
{
|
||||
|
||||
public function index() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function category() {
|
||||
|
||||
$dirname = dr_safe_filename(\Phpcmf\Service::L('input')->get('mid'));
|
||||
if (!$dirname) {
|
||||
$dirname = dr_safe_filename(\Phpcmf\Service::L('input')->get('module'));
|
||||
}
|
||||
if (!$dirname) {
|
||||
$this->_json(0, dr_lang('module参数不存在'));
|
||||
}
|
||||
|
||||
$site = max(1, (int)\Phpcmf\Service::L('input')->get('site'));
|
||||
if (!$site) {
|
||||
$site = SITE_ID;
|
||||
}
|
||||
|
||||
// 独立模块填目录 / 共享模块填 share
|
||||
$category = \Phpcmf\Service::L('category', 'module')->get_category($dirname, $site);
|
||||
if (!$category) {
|
||||
$this->_json(0, dr_lang('栏目不存在或未生成缓存'), []);
|
||||
}
|
||||
|
||||
// 模块是否共享(缓存)
|
||||
$mod_share = [];
|
||||
|
||||
$list = [];
|
||||
foreach ($category as $id => $t) {
|
||||
if (!$t || !is_array($t)) {
|
||||
continue;
|
||||
}
|
||||
$tid = (int)($t['tid'] ?? 0);
|
||||
// 外链栏目不输出
|
||||
if ($tid === 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$cid = (int)($t['id'] ?? $id);
|
||||
$cmid = dr_safe_filename((string)($t['mid'] ?? ''));
|
||||
|
||||
// show_url:基础路径,站点域名与 api_token 由客户端自行组装
|
||||
if ($dirname !== 'share') {
|
||||
$t['show_url'] = 'index.php?s='.$dirname.'&c=category&id='.$cid;
|
||||
} else {
|
||||
$use_s = false;
|
||||
if ($cmid !== '') {
|
||||
if (!isset($mod_share[$cmid])) {
|
||||
$mod = \Phpcmf\Service::L('cache')->get('module-'.$site.'-'.$cmid);
|
||||
$mod_share[$cmid] = ($mod && empty($mod['share'])) ? 0 : 1;
|
||||
}
|
||||
// share=0 表示独立模块
|
||||
$use_s = ($mod_share[$cmid] === 0);
|
||||
}
|
||||
if ($use_s) {
|
||||
$t['show_url'] = 'index.php?s='.$cmid.'&c=category&id='.$cid;
|
||||
} else {
|
||||
$t['show_url'] = 'index.php?c=category&id='.$cid;
|
||||
}
|
||||
}
|
||||
|
||||
// list_url:模块栏目才有列表
|
||||
if ($tid === 1 && $cmid !== '') {
|
||||
$t['list_url'] = 'index.php?s='.$cmid.'&c=search&catid='.$cid;
|
||||
} else {
|
||||
$t['list_url'] = '';
|
||||
}
|
||||
|
||||
$list[$id] = $t;
|
||||
}
|
||||
|
||||
$this->_json(1, 'ok', $list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 内容关联字段数据读取
|
||||
*/
|
||||
public function related() {
|
||||
|
||||
// 强制将模板设置为后台
|
||||
\Phpcmf\Service::V()->admin();
|
||||
|
||||
// 登陆判断
|
||||
/*
|
||||
if (!$this->uid) {
|
||||
$this->_json(0, dr_lang('会话超时,请重新登录'));
|
||||
}*/
|
||||
|
||||
// 参数判断
|
||||
$dirname = dr_safe_filename(\Phpcmf\Service::L('input')->get('module'));
|
||||
if (!$dirname) {
|
||||
$this->_json(0, dr_lang('module参数不存在'));
|
||||
}
|
||||
|
||||
// 站点选择
|
||||
$site = max(1, (int)\Phpcmf\Service::L('input')->get('site'));
|
||||
$pagesize = (int)\Phpcmf\Service::L('input')->get('pagesize');
|
||||
if (!$pagesize) {
|
||||
$pagesize = 10;
|
||||
}
|
||||
|
||||
// 模块缓存判断
|
||||
$module = $this->get_cache('module-'.$site.'-'.$dirname);
|
||||
if (!$module) {
|
||||
$this->_json(0, dr_lang('模块(%s)不存在', $dirname));
|
||||
}
|
||||
|
||||
$module['field']['id'] = [
|
||||
'name' => 'Id',
|
||||
'ismain' => 1,
|
||||
'fieldtype' => 'Text',
|
||||
'fieldname' => 'id',
|
||||
];
|
||||
|
||||
$param = $data = \Phpcmf\Service::L('input')->get('', true);
|
||||
|
||||
$diy = dr_safe_filename($data['diy']);
|
||||
|
||||
if (IS_POST) {
|
||||
$ids = \Phpcmf\Service::L('input')->get_post_ids();
|
||||
if (!$ids) {
|
||||
$this->_json(0, dr_lang('没有选择项'));
|
||||
}
|
||||
$id = [];
|
||||
foreach ($ids as $i) {
|
||||
$id[] = (int)$i;
|
||||
}
|
||||
$builder = \Phpcmf\Service::M()->db->table($site.'_'.$dirname);
|
||||
$builder->whereIn('id', $id);
|
||||
$mylist = $builder->orderBy('updatetime DESC')->get()->getResultArray();
|
||||
if (!$mylist) {
|
||||
$this->_json(0, dr_lang('没有相关数据'));
|
||||
}
|
||||
$name = dr_safe_filename(\Phpcmf\Service::L('input')->get('name'));
|
||||
if (!$name) {
|
||||
$this->_json(0, dr_lang('name参数不能为空'));
|
||||
}
|
||||
|
||||
$mid = $dirname;
|
||||
$ids = [];
|
||||
foreach ($mylist as $t) {
|
||||
$ids[] = $t['id'];
|
||||
}
|
||||
|
||||
$file = \Phpcmf\Service::V()->code2php(
|
||||
file_get_contents(is_file(MYPATH.'View/api_related_field_'.$diy.'.html') ? MYPATH.'View/api_related_field_'.$diy.'.html' : COREPATH.'View/api_related_field.html')
|
||||
);
|
||||
ob_start();
|
||||
require $file;
|
||||
$code = ob_get_clean();
|
||||
$html = explode('<!--list-->', $code);
|
||||
|
||||
$this->_json(1, dr_lang('操作成功'), ['ids' => $ids, 'html' => $html[1]]);
|
||||
}
|
||||
|
||||
$my = intval($data['my']);
|
||||
$where = [];
|
||||
if ($my) {
|
||||
$where[] = 'uid = '.$this->uid;
|
||||
} elseif ($this->member && $this->member['adminid'] > 0) {
|
||||
$module['field']['uid'] = [
|
||||
'name' => dr_lang('账号'),
|
||||
'ismain' => 1,
|
||||
'fieldtype' => 'Text',
|
||||
'fieldname' => 'uid',
|
||||
];
|
||||
}
|
||||
if ($data['search']) {
|
||||
$catid = (int)$data['catid'];
|
||||
if ($catid) {
|
||||
$cat = dr_cat_value($module['mid'], $catid);
|
||||
if ($cat['catids']) {
|
||||
$where[] = '`catid` in('.implode(',', $cat['catids']).')';
|
||||
}
|
||||
}
|
||||
$data['keyword'] = dr_safe_replace(urldecode($data['keyword']));
|
||||
if (isset($data['keyword']) && $data['keyword'] && $data['field'] && isset($module['field'][$data['field']])) {
|
||||
$data['keyword'] = dr_safe_replace(urldecode($data['keyword']));
|
||||
if ($data['field'] == 'id') {
|
||||
// id搜索
|
||||
$id = [];
|
||||
$ids = explode(',', $data['keyword']);
|
||||
foreach ($ids as $i) {
|
||||
$id[] = (int)$i;
|
||||
}
|
||||
$where[] = 'id in('.implode(',', $id).')';
|
||||
} else if ($data['field'] == 'uid') {
|
||||
$uid = \Phpcmf\Service::M('member')->uid($data['keyword']);
|
||||
$where[] = 'uid = '.intval($uid);
|
||||
} else {
|
||||
// 其他模糊搜索
|
||||
$where[] = $data['field'].' LIKE "%'.$data['keyword'].'%"';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sort($module['field']);
|
||||
$rules = $data;
|
||||
$rules['page'] = '{page}';
|
||||
|
||||
\Phpcmf\Service::V()->assign([
|
||||
'diy' => $data['diy'],
|
||||
'mid' => $dirname,
|
||||
'mmid' => $module['mid'],
|
||||
'site' => $site,
|
||||
'param' => $data,
|
||||
'field' => $module['field'],
|
||||
'where' => $where ? urlencode(implode(' AND ', $where)) : '',
|
||||
'search' => dr_form_search_hidden(['search' => 1, 'is_iframe' => 1, 'module' => $dirname, 'site' => $site, 'diy' => $data['diy'], 'my' => $my, 'pagesize' => $pagesize]),
|
||||
'select' => \Phpcmf\Service::L('category', 'module')->select(
|
||||
$module['dirname'],
|
||||
$data['catid'],
|
||||
'name="catid"',
|
||||
'--'
|
||||
),
|
||||
'urlrule' => '/index.php?s=module&c=api&m=related&'.http_build_query($rules),
|
||||
'pagesize' => $pagesize,
|
||||
]);
|
||||
if (is_file(MYPATH.'View/api_related_'.$diy.'.html')) {
|
||||
\Phpcmf\Service::V()->display('api_related_'.$diy.'.html');
|
||||
} else {
|
||||
\Phpcmf\Service::V()->display('api_related.html');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user