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('', $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'); } } }