fieldtype = ['TEXT' => '']; // TRUE表全部可用字段类型,自定义格式为 array('可用字段类型名称' => '默认长度', ... ) $this->defaulttype = 'TEXT'; // 当用户没有选择字段类型时的缺省值 } /** * 字段相关属性参数 * * @param array $value 值 * @return string */ public function option($option) { $_option = ''; $_module = \Phpcmf\Service::C()->get_cache('module-'.SITE_ID.'-content'); if ($_module) { foreach ($_module as $dir => $t) { $_option.= ''; } } return [$this->_search_field().'
'.dr_lang('必须选择一个模块作为关联数据源').'
'.dr_lang('开启之后只显示当前登录的用户自己所发布的内容').'
'.dr_lang('用于显示管理的主题字段名称,默认是:主题').'
'.dr_lang('最大能选择的数量限制').'
'.dr_lang('选择列表分页条数,按多少条数据分页').'
'.dr_lang('此字段不能参与搜索条件筛选').'
']; } /** * 字段输出 */ public function output($value) { return $value; } /** * 字段入库值 */ public function insert_value($field) { $data = \Phpcmf\Service::L('Field')->post[$field['fieldname']]; $limit = intval($field['setting']['option']['limit']); if ($limit && $data && count($data) > $limit) { // 超限了 $value = implode(',', dr_arraycut($data, $limit)); } else { $value = !$data ? '' : implode(',', $data); } \Phpcmf\Service::L('Field')->data[$field['ismain']][$field['fieldname']] = $value; } /** * 字段表单输入 * * @param string $cname 字段别名 * @param string $name 字段名称 * @param array $cfg 字段配置 * @param string $value 值 * @return string */ public function input($field, $value = '') { // 字段禁止修改时就返回显示字符串 if ($this->_not_edit($field, $value)) { return $this->show($field, $value); } if (!IS_USE_MODULE) { return '使用本字段类别需要安装【建站系统】插件'; } $is_show = 0; // 字段存储名称 $name = $field['fieldname']; // 字段提示信息 $tips = isset($field['setting']['validate']['tips']) && $field['setting']['validate']['tips'] ? ''.$field['setting']['validate']['tips'].'' : ''; // 区域大小 $area = \Phpcmf\Service::IS_MOBILE_USER() ? '["95%", "90%"]' : '["50%", "65%"]'; // 模块名称 $module = $mid = isset($field['setting']['option']['module']) ? $field['setting']['option']['module'] : ''; // 字段显示名称 $text = ($field['setting']['validate']['required'] ? ' * ' : '').dr_lang($field['name']); // 选择数量限制 $limit = intval($field['setting']['option']['limit']); !$limit && $limit = 99999; // 输出信息 $cname = ($field['setting']['option']['title'] ? $field['setting']['option']['title'] : dr_lang('主题')); if (!$module) { if (CI_DEBUG) { return $this->input_format($name, $text, '
关联字段没有设置关联模块
'); } return $this->input_format($name, $text, ''); } elseif (!dr_is_module($module)) { if (CI_DEBUG) { return $this->input_format($name, $text, '
关联字段设置的模块【'.$module.'】没有被安装
'); } return $this->input_format($name, $text, ''); } $value = $value ? trim($value, ',') : ''; $mylist = []; if ($value && is_string($value)) { $arr = explode(',', $value); if ($arr) { $value = ''; foreach ($arr as $a) { $a = intval($a); if ($a) { $value.= ','.$a; } } if ($value) { $value = trim($value, ','); $db = \Phpcmf\Service::M()->db->query('select * from '.\Phpcmf\Service::M()->dbprefix(dr_module_table_prefix($module)).' where id IN ('.$value.') order by FIELD(id, '.$value.')'); $mylist = $db ? $db->getResultArray() : []; } } } $file = \Phpcmf\Service::V()->code2php( file_get_contents(is_file(MYPATH.'View/api_related_field_'.$field['fieldname'].'.html') ? MYPATH.'View/api_related_field_'.$field['fieldname'].'.html' : COREPATH.'View/api_related_field.html') ); ob_start(); require $file; $str = ob_get_clean(); $str.= $tips; $js = \Phpcmf\Service::L('js_packer'); $str.= $js->pack(' ', 0); return $this->input_format($name, $text, $str); } /** * 字段表单显示 * * @param string $field 字段数组 * @param array $value 值 * @return string */ public function show($field, $value = null) { $cname = ($field['setting']['option']['title'] ? $field['setting']['option']['title'] : dr_lang('主题')); $value = @trim($value, ','); $mylist = []; $is_show = 1; $module = $mid = isset($field['setting']['option']['module']) ? $field['setting']['option']['module'] : ''; if ($value && is_string($value) && $module) { $arr = explode(',', $value); if ($arr) { $value = ''; foreach ($arr as $a) { $a = intval($a); if ($a) { $value.= ','.$a; } } if ($value) { $value = trim($value, ','); $db = \Phpcmf\Service::M()->db->query('select * from '.\Phpcmf\Service::M()->dbprefix(dr_module_table_prefix($module)).' where id IN ('.$value.') order by FIELD(id, '.$value.')'); $mylist = $db ? $db->getResultArray() : []; } } } $tpl = $field['fieldname']; $file = \Phpcmf\Service::V()->code2php( file_get_contents(is_file(MYPATH.'View/api_'.$tpl.'_field.html') ? MYPATH.'View/api_'.$tpl.'_field.html' : COREPATH.'View/api_related_field.html') ); ob_start(); require $file; $str = ob_get_clean(); return $this->input_format($field['fieldname'], $field['name'], $str); } }