fieldtype = ['mediumint' => 8];
$this->defaulttype = 'mediumint';
}
/**
* 字段相关属性参数
*
* @param array $value 值
* @return string
*/
public function option($option) {
$str = '';
$str2 = '';
return ['
', ''];
}
/**
* 创建sql语句
*/
public function create_sql($name, $option, $cname = '') {
// 联动菜单 ID:mediumint(8) UNSIGNED
$type = 'mediumint(8)';
$info = 'UNSIGNED NULL';
$note = $cname ? (string)$cname : '';
$db = $this->_db_for_field_sql();
if ($db && method_exists($db, 'sqlAddField')) {
return $db->sqlAddField($name, $type, $info, $note);
}
$tips = $note !== '' ? " COMMENT '".str_replace("'", "''", $note)."'" : '';
return 'ALTER TABLE `{tablename}` ADD `'.$name.'` '.$type.' '.$info.$tips;
}
/**
* 字段输出
*/
public function output($value) {
return $value;
}
/**
* 字段入库值
*
* @param array $field 字段信息
* @return void
*/
public function insert_value($field) {
\Phpcmf\Service::L('Field')->data[$field['ismain']][$field['fieldname']] = (int)\Phpcmf\Service::L('Field')->post[$field['fieldname']];
}
/**
* 验证字段值
*
* @param string $field 字段类型
* @param string $value 字段值
* @return
*/
public function check_value($field, $value) {
$value = intval($value);
if ($value) {
$link = dr_linkage($field['setting']['option']['linkage'], $value);
if (!$link) {
return dr_lang('选项无效');
} elseif ($field['setting']['option']['ck_child'] && $link['child']) {
return dr_lang('需要选择下级选项');
}
}
return '';
}
/**
* 验证必填字段值
*
* @param string $field 字段类型
* @param string $value 字段值
* @return
*/
public function check_required($field, $value) {
$value = intval($value);
if (!$value) {
// 验证值为空
return dr_lang('%s不能为空', $field['name']);
}
return '';
}
/**
* 字段表单输入
*
* @param string $field 字段数组
* @param array $value 值
* @return string
*/
public function input($field, $value = null) {
// 字段禁止修改时就返回显示字符串
if ($this->_not_edit($field, $value)) {
return $this->show($field, $value);
}
// 字段存储名称
$name = $field['fieldname'];
// 字段显示名称
$text = ($field['setting']['validate']['required'] ? ' * ' : '').dr_lang($field['name']);
// 字段提示信息
$tips = ($name == 'title' && APP_DIR) || $field['setting']['validate']['tips'] ? ''.$field['setting']['validate']['tips'].'' : '';
// 字段默认值
$value = $value ? $value : $this->get_default_value($field['setting']['option']['value']);
if ($field['setting']['option']['new']) {
// 开始输出
$str = '';
if (!$this->is_load_js($field['fieldtype'])) {
$str.= '
';
$this->set_load_js($field['fieldtype'], 1);
}
// 输出js支持
$str.= '
'.$tips;
} else {
// 联动菜单缓存
$linkage = dr_linkage_list($field['setting']['option']['linkage'], 0);
if (!$linkage) {
if (CI_DEBUG) {
return $this->input_format($name, $text, '联动菜单【'.$field['setting']['option']['linkage'].'】没有数据
');
}
return $this->input_format($name, $text, '');
}
// 最大几层
$linklevel = dr_linkage_level($field['setting']['option']['linkage']) + 1;
// 开始输出
$str = '';
if (!$this->is_load_js($field['fieldtype'].'_LD')) {
$str.= '';
$this->set_load_js($field['fieldtype'].'_LD', 1);
}
$level = 1;
$default = '';
if ($value) {
$link = dr_linkage($field['setting']['option']['linkage'], $value);
if ($link) {
$pids = substr($link['pids'], 2);
$level = substr_count($pids, ',') + 1;
$default = !$pids ? '["'.$value.'"]' : '["'.str_replace(',', '","', $pids).'","'.$value.'"]';
}
}
// 输出默认菜单
$str.= '';
for ($i = 1; $i <= $linklevel; $i++) {
$style = $i > $level ? 'style="display:none"' : '';
$str.= '';
}
$str.= '';
$str.= '';
// 重新选择
if ($value) {
$str.= '';
$edit_html = '
';
if ($field['setting']['option']['file']) {
$data = dr_linkage($field['setting']['option']['linkage'], $value);
$file = CONFIGPATH.'mylinkage/'.$field['setting']['option']['file'];
$file2 = dr_get_app_dir(APP_DIR).'Config/mylinkage/'.$field['setting']['option']['file'];
if (is_file($file)) {
require $file;
} elseif (is_file($file2)) {
require $file2;
} else {
log_message('error', '联动菜单自定义程序文件【'.$field['setting']['option']['file'].'】不存在');
if (CI_DEBUG) {
$edit_html.= '联动菜单自定义程序文件【'.$field['setting']['option']['file'].'】不存在';
}
}
}
$str.= $edit_html;
$str.= '
';
}
// 输出js支持
$str.= '
'.$tips;
}
return $this->input_format($name, $text, $str);
}
/**
* 字段表单显示
*
* @param string $field 字段数组
* @param array $value 值
* @return string
*/
public function show($field, $value = null) {
return $this->input_format($field['fieldname'], $field['name'], ''.dr_linkagepos($field['setting']['option']['linkage'], $value, ' - ').'
');
}
}