588 lines
24 KiB
PHP
588 lines
24 KiB
PHP
<?php namespace Phpcmf\Model\Mform;
|
||
|
||
// 模型类
|
||
class Mform extends \Phpcmf\Model
|
||
{
|
||
|
||
// 创建
|
||
public function create_module_form($data) {
|
||
|
||
$data['name'] = dr_safe_filename($data['name']);
|
||
|
||
// 为全部站点模块创建表单
|
||
foreach (\Phpcmf\Service::C()->site_info as $sid => $v) {
|
||
$par = $this->dbprefix(dr_module_table_prefix($data['module'], $sid)); // 父级表
|
||
$pre = $par.'_form_'.$data['table']; // 当前表
|
||
// 判断模块是否安装过
|
||
if (!$this->is_table_exists($par)) {
|
||
continue;
|
||
}
|
||
\Phpcmf\Service::M('table')->create_table(
|
||
$pre,
|
||
[
|
||
'id' => 'int(10) unsigned NOT NULL AUTO_INCREMENT',
|
||
'cid' => 'int(10) unsigned NOT NULL COMMENT \'内容id\'',
|
||
'catid' => 'mediumint(8) unsigned NOT NULL COMMENT \'栏目id\'',
|
||
'uid' => 'mediumint(8) unsigned NOT NULL COMMENT \'作者id\'',
|
||
'author' => 'varchar(50) NOT NULL COMMENT \'作者名称\'',
|
||
'inputip' => 'varchar(200) DEFAULT NULL COMMENT \'录入者ip\'',
|
||
'inputtime' => 'int(10) unsigned NOT NULL COMMENT \'录入时间\'',
|
||
'title' => 'varchar(255) DEFAULT NULL COMMENT \'表单主题\'',
|
||
'status' => 'tinyint(1) DEFAULT NULL COMMENT \'状态值\'',
|
||
'tableid' => 'smallint(5) unsigned NOT NULL COMMENT \'附表id\'',
|
||
'displayorder' => 'int(10) DEFAULT NULL COMMENT \'排序值\'',
|
||
],
|
||
[
|
||
'PRIMARY KEY (`id`)',
|
||
'KEY `cid` (`cid`)',
|
||
'KEY `uid` (`uid`)',
|
||
'KEY `catid` (`catid`)',
|
||
'KEY `author` (`author`)',
|
||
'KEY `status` (`status`)',
|
||
'KEY `displayorder` (`displayorder`)',
|
||
'KEY `inputtime` (`inputtime`)',
|
||
],
|
||
'模块表单'.$data['name'].'表'
|
||
);
|
||
\Phpcmf\Service::M('table')->create_table(
|
||
$pre.'_data_0',
|
||
[
|
||
'id' => 'int(10) unsigned NOT NULL',
|
||
'cid' => 'int(10) unsigned NOT NULL COMMENT \'内容id\'',
|
||
'catid' => 'mediumint(8) unsigned NOT NULL COMMENT \'栏目id\'',
|
||
'uid' => 'mediumint(8) unsigned NOT NULL COMMENT \'作者id\'',
|
||
],
|
||
[
|
||
'UNIQUE KEY `id` (`id`)',
|
||
'KEY `cid` (`cid`)',
|
||
'KEY `catid` (`catid`)',
|
||
'KEY `uid` (`uid`)',
|
||
],
|
||
'模块表单'.$data['name'].'附表'
|
||
);
|
||
// 加上统计字段
|
||
if ($this->is_field_exists($par, $data['table']."_total")) {
|
||
continue;
|
||
}
|
||
\Phpcmf\Service::M('table')->add_field(
|
||
$par,
|
||
$data['table'].'_total',
|
||
'INT(10) UNSIGNED',
|
||
'NULL DEFAULT \'0\'',
|
||
'表单'.$data['name'].'统计'
|
||
);
|
||
}
|
||
|
||
// 删除原有的冗余字段
|
||
$this->db->table('field')->where('relatedid', $data['id'])->where('relatedname', 'mform-'.$data['module'])->delete();
|
||
|
||
// 默认字段
|
||
$this->db->table('field')->insert(array(
|
||
'name' => '主题',
|
||
'fieldname' => 'title',
|
||
'fieldtype' => 'Text',
|
||
'relatedid' => $data['id'],
|
||
'relatedname' => 'mform-'.$data['module'],
|
||
'isedit' => 1,
|
||
'ismain' => 1,
|
||
'ismember' => 1,
|
||
'issystem' => 1,
|
||
'issearch' => 1,
|
||
'disabled' => 0,
|
||
'setting' => dr_array2string(array(
|
||
'option' => array(
|
||
'width' => 300, // 表单宽度
|
||
'fieldtype' => 'VARCHAR', // 字段类型
|
||
'fieldlength' => '255' // 字段长度
|
||
),
|
||
'validate' => array(
|
||
'xss' => 1, // xss过滤
|
||
'required' => 1, // 表示必填
|
||
)
|
||
)),
|
||
'displayorder' => 0,
|
||
));
|
||
$this->db->table('field')->insert(array(
|
||
'name' => '作者',
|
||
'fieldname' => 'author',
|
||
'fieldtype' => 'Text',
|
||
'relatedid' => $data['id'],
|
||
'relatedname' => 'mform-'.$data['module'],
|
||
'isedit' => 1,
|
||
'ismain' => 1,
|
||
'ismember' => 1,
|
||
'issystem' => 1,
|
||
'issearch' => 1,
|
||
'disabled' => 0,
|
||
'setting' => dr_array2string(array(
|
||
'is_right' => 1,
|
||
'option' => array(
|
||
'width' => 200, // 表单宽度
|
||
'fieldtype' => 'VARCHAR', // 字段类型
|
||
'fieldlength' => '255' // 字段长度
|
||
),
|
||
'validate' => array(
|
||
'xss' => 1, // xss过滤
|
||
)
|
||
)),
|
||
'displayorder' => 0,
|
||
));
|
||
}
|
||
|
||
// 删除模块表单
|
||
public function delete_module_form($data) {
|
||
|
||
$id = intval($data['id']);
|
||
$table = $this->dbprefix(dr_module_table_prefix($data['module']).'_form_'.$data['table']);
|
||
// 判断模块是否存在表
|
||
if (!$this->is_table_exists($table)) {
|
||
return;
|
||
}
|
||
|
||
// 删除字段
|
||
$this->db->table('field')->where('relatedid', $id)->where('relatedname', 'mform-'.$data['module'])->delete();
|
||
|
||
// 删除表
|
||
\Phpcmf\Service::M('table')->drop_table($table, true);
|
||
|
||
// 删除附表
|
||
for ($i = 0; $i < 200; $i ++) {
|
||
if (!$this->is_table_exists($table.'_data_'.$i)) {
|
||
break;
|
||
}
|
||
\Phpcmf\Service::M('table')->drop_table($table.'_data_'.$i, true);
|
||
}
|
||
|
||
// 模块表统计字段删除
|
||
$par = $this->dbprefix(dr_module_table_prefix($data['module']));
|
||
// 判断模块是否存在表
|
||
if (!$this->is_table_exists($par)) {
|
||
return;
|
||
}
|
||
|
||
if ($this->is_field_exists($par, $data['table']."_total")) {
|
||
\Phpcmf\Service::M('table')->drop_field($par, $data['table'].'_total');
|
||
}
|
||
|
||
// 挂钩点
|
||
\Phpcmf\Hooks::trigger('module_form_uninstall_after', $data);
|
||
}
|
||
|
||
// 创建表单文件
|
||
public function create_form_file($dir, $table, $call = 0) {
|
||
|
||
$dir = ucfirst($dir);
|
||
$path = dr_get_app_dir($dir);
|
||
if (!is_dir($path)) {
|
||
return dr_return_data(1, 'ok');
|
||
}
|
||
|
||
$name = ucfirst($table);
|
||
$temp = dr_get_app_dir('mform').'Code/';
|
||
$files = [
|
||
$path.'Controllers/'.$name.'.php' => $temp.'$NAME$.php',
|
||
$path.'Controllers/Member/'.$name.'.php' => $temp.'Member$NAME$.php',
|
||
$path.'Controllers/Admin/'.$name.'.php' => $temp.'Admin$NAME$.php',
|
||
$path.'Controllers/Admin/'.$name.'_verify.php' => $temp.'Admin$NAME$_verify.php',
|
||
];
|
||
|
||
$ok = 0;
|
||
foreach ($files as $file => $form) {
|
||
if (!is_file($file)) {
|
||
$c = file_get_contents($form);
|
||
$size = file_put_contents($file, str_replace('$NAME$', $name, $c));
|
||
if (!$size && $call) {
|
||
unlink($file);
|
||
return dr_return_data(0, dr_lang('文件%s创建失败,无可写权限', str_replace(FCPATH, '', $file)));
|
||
}
|
||
$ok ++;
|
||
}
|
||
}
|
||
|
||
return dr_return_data(1, $ok);
|
||
}
|
||
|
||
|
||
// 创建模块表单
|
||
public function create_form($dir, $data) {
|
||
|
||
// 插入表单数据
|
||
$data['table'] = strtolower($data['table']);
|
||
$rt = $this->table('module_form')->insert([
|
||
'name' => $data['name'],
|
||
'table' => $data['table'],
|
||
'module' => $dir,
|
||
'setting' => '',
|
||
'disabled' => 0,
|
||
]);
|
||
|
||
if (!$rt['code']) {
|
||
return $rt;
|
||
}
|
||
|
||
$id = $data['id'] = $rt['code'];
|
||
$data['module'] = $dir;
|
||
|
||
// 创建文件
|
||
$rt = $this->create_form_file($dir, $data['table']);
|
||
if (!$rt['code']) {
|
||
$this->table('module_form')->delete($id);
|
||
return $rt;
|
||
}
|
||
|
||
// 创建表
|
||
$this->create_module_form($data);
|
||
|
||
return dr_return_data(1, 'ok');
|
||
}
|
||
|
||
// 删除模块表单
|
||
public function delete_form($ids) {
|
||
|
||
foreach ($ids as $id) {
|
||
$row = $this->table('module_form')->get(intval($id));
|
||
if (!$row) {
|
||
return dr_return_data(0, dr_lang('模块表单不存在(id:%s)', $id));
|
||
}
|
||
$rt = $this->table('module_form')->delete($id);
|
||
if (!$rt['code']) {
|
||
return dr_return_data(0, $rt['msg']);
|
||
}
|
||
$name = ucfirst($row['table']);
|
||
$path = dr_get_app_dir($row['module']);
|
||
unlink($path.'Controllers/'.$name.'.php');
|
||
unlink($path.'Controllers/Admin/'.$name.'.php');
|
||
unlink($path.'Controllers/Member/'.$name.'.php');
|
||
unlink($path.'Controllers/Admin/'.$name.'_verify.php');
|
||
// 删除表数据
|
||
$this->delete_module_form($row);
|
||
}
|
||
|
||
return dr_return_data(1, '');
|
||
}
|
||
|
||
public function link_menu($form, $table, $mdir, $config, $left) {
|
||
// 表单入库
|
||
if ($form) {
|
||
foreach ($form as $t) {
|
||
$mark = 'app-mform-verify-'.$mdir.'-'.$t['table'];
|
||
$menu = $this->db->table($table.'_menu')->where('mark', $mark)->get()->getRowArray();
|
||
$save = [
|
||
'uri' => $mdir.'/'.$t['table'].'_verify/index',
|
||
'mark' => $mark,
|
||
'name' => $menu && $menu['name'] ? $menu['name'] : dr_lang('%s%s', $config['name'], $t['name']),
|
||
'icon' => $menu && $menu['icon'] ? $menu['icon'] : dr_icon($t['setting']['icon']),
|
||
'displayorder' => $menu ? intval($menu['displayorder']) : '-1',
|
||
];
|
||
$menu ? \Phpcmf\Service::M('menu')->_edit($table, $menu['id'], $save) : \Phpcmf\Service::M('menu')->_add($table, $left['id'], $save);
|
||
}
|
||
}
|
||
}
|
||
|
||
public function link_delete($module, $dir) {
|
||
|
||
$this->db->table('field')->where('relatedid', $module['id'])->where('relatedname', 'mform-'.$dir)->delete();
|
||
$this->db->table('admin_menu')->like('mark', 'app-mform-verify-'.$dir)->delete();
|
||
$this->db->table('module_form')->where('module', $dir)->delete();
|
||
}
|
||
|
||
public function link_uninstall($table, $dir) {
|
||
|
||
// 删除表单
|
||
$form = $this->db->table('module_form')->where('module', $dir)->get()->getResultArray();
|
||
if ($form) {
|
||
foreach ($form as $t) {
|
||
$mytable = $table.'_form_'.$t['table'];
|
||
// 主表
|
||
\Phpcmf\Service::M('table')->drop_table($mytable, true);
|
||
// 附表
|
||
for ($i = 0; $i < 200; $i ++) {
|
||
if (!$this->is_table_exists($mytable.'_data_'.$i)) {
|
||
break;
|
||
}
|
||
\Phpcmf\Service::M('table')->drop_table($mytable.'_data_'.$i, true);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
private function _link_install($module, $mpath, $dir, $table) {
|
||
if (is_file($mpath.'Config/Form.php')) {
|
||
$form = require $mpath.'Config/Form.php';
|
||
if ($form) {
|
||
foreach ($form as $ftable => $t) {
|
||
// 插入表单数据
|
||
$rt = $this->table('module_form')->insert([
|
||
'name' => $t['form']['name'],
|
||
'table' => $ftable,
|
||
'module' => $dir,
|
||
'setting' => $t['form']['setting'],
|
||
'disabled' => 0,
|
||
]);
|
||
if ($rt['code']) {
|
||
// 建表(Schema → create_table;旧版 CREATE SQL → formatCreateSql)
|
||
foreach ([1 => $table.'_form_'.$ftable, 0 => $table.'_form_'.$ftable.'_data_0'] as $ti => $tablename) {
|
||
$def = $t['table'][$ti] ?? '';
|
||
if (is_array($def) && isset($def['fields'])) {
|
||
\Phpcmf\Service::M('table')->create_table(
|
||
$tablename,
|
||
$def['fields'],
|
||
$def['indexes'] ?? [],
|
||
$def['comment'] ?? ''
|
||
);
|
||
} elseif ($def) {
|
||
$this->db->simpleQuery(str_replace('{tablename}', $tablename, dr_format_create_sql((string) $def)));
|
||
}
|
||
}
|
||
// 插入自定义字段
|
||
foreach ([1, 0] as $is_main) {
|
||
$f = $t['field'][$is_main];
|
||
if ($f) {
|
||
foreach ($f as $field) {
|
||
\Phpcmf\Service::M('module')->_add_field($field, $is_main, $rt['code'], 'mform-'.$dir);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public function link_install($module, $mpath, $dir, $table) {
|
||
// 创建表单
|
||
if (dr_count($module['site']) == 1) {
|
||
// 表示第一个站就创建表单
|
||
$this->_link_install($module, $mpath, $dir, $table);
|
||
} else {
|
||
// 创建模块已经存在的表单
|
||
$form = $this->db->table('module_form')->where('module', $dir)->get()->getResultArray();
|
||
if ($form) {
|
||
$this->db->resetDataCache();// 清除缓存,影响字段存在的重复
|
||
foreach ($form as $t) {
|
||
// 表示存在多个站
|
||
$sid = 0;
|
||
foreach ($module['site'] as $site => $tt) {
|
||
if ($this->is_table_exists($this->dbprefix($site.'_'.$dir).'_form_'.$t['table'])) {
|
||
// 表示已经在其他站创建过了,我们就复制它以前创建的表结构
|
||
$sid = $site;
|
||
break;
|
||
}
|
||
}
|
||
if ($sid) {
|
||
// 开始创建表单
|
||
$mytable = $table.'_form_'.$t['table'];
|
||
$cptable = $this->dbprefix($sid.'_'.$dir).'_form_'.$t['table'];
|
||
// 主表
|
||
list($sql) = \Phpcmf\Service::M('table')->create_table_sql($cptable);
|
||
$sql = str_replace($cptable, $mytable, $sql);
|
||
$this->db->simpleQuery(dr_format_create_sql($sql));
|
||
// 附表
|
||
list($sql) = \Phpcmf\Service::M('table')->create_table_sql($cptable.'_data_0');
|
||
$sql = str_replace($cptable.'_data_0', $mytable.'_data_0', $sql);
|
||
$this->db->simpleQuery(dr_format_create_sql($sql));
|
||
} else {
|
||
// 没有表就删除表单
|
||
//log_message('error', '没有表就删除表单');
|
||
$this->db->table('module_form')->where('id', $t['id'])->delete();
|
||
}
|
||
}
|
||
} else {
|
||
$this->_link_install($module, $mpath, $dir, $table);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 缓存
|
||
public function link_cache($mdir, $cache) {
|
||
$form = $this->table('module_form')->where('module', $mdir)->where('disabled', 0)->order_by('id ASC')->getAll();
|
||
if ($form) {
|
||
foreach ($form as $t) {
|
||
$t['field'] = [];
|
||
// 模块表单的自定义字段
|
||
if (!$this->table('field')
|
||
->where('relatedname', 'mform-'.$mdir)
|
||
->where('relatedid', intval($t['id']))
|
||
->where('fieldname', 'author')->counts()) {
|
||
$this->db->table('field')->insert(array(
|
||
'name' => '作者',
|
||
'fieldname' => 'author',
|
||
'fieldtype' => 'Text',
|
||
'relatedid' => $t['id'],
|
||
'relatedname' => 'mform-'.$mdir,
|
||
'isedit' => 1,
|
||
'ismain' => 1,
|
||
'ismember' => 1,
|
||
'issystem' => 1,
|
||
'issearch' => 1,
|
||
'disabled' => 0,
|
||
'setting' => dr_array2string(array(
|
||
'is_right' => 1,
|
||
'option' => array(
|
||
'width' => 200, // 表单宽度
|
||
'fieldtype' => 'VARCHAR', // 字段类型
|
||
'fieldlength' => '255' // 字段长度
|
||
),
|
||
'validate' => array(
|
||
'xss' => 1, // xss过滤
|
||
)
|
||
)),
|
||
'displayorder' => 0,
|
||
));
|
||
}
|
||
$field = $this->db->table('field')->where('disabled', 0)->where('relatedid', intval($t['id']))->where('relatedname', 'mform-'.$mdir)->orderBy('displayorder ASC, id ASC')->get()->getResultArray();
|
||
if ($field) {
|
||
foreach ($field as $f) {
|
||
$f['setting'] = dr_string2array($f['setting']);
|
||
$t['field'][$f['fieldname']] = $f;
|
||
}
|
||
}
|
||
$t['setting'] = dr_string2array($t['setting']);
|
||
// 排列table字段顺序
|
||
$t['setting']['list_field'] = dr_list_field_order($t['setting']['list_field']);
|
||
$cache['form'][$t['table']] = $t;
|
||
}
|
||
}
|
||
return $cache;
|
||
}
|
||
|
||
// 保存数据
|
||
public function save_content($mid, $tid, $index, $data, $data2 = []) {
|
||
|
||
$data['status'] = isset($data['status']) ? intval($data['status']) : 1;
|
||
$data['uid'] = isset($data['uid']) ? intval($data['uid']) : (int)$this->member['uid'];
|
||
$data['author'] = isset($data['author']) ? trim($data['author']) : $this->member['username'];
|
||
$data['inputip'] = isset($data['inputip']) ? $data['inputip'] : \Phpcmf\Service::L('input')->ip_info();
|
||
$data['inputtime'] = isset($data['inputtime']) ? $data['inputtime'] : SYS_TIME;
|
||
$data['tableid'] = 0;
|
||
$data['displayorder'] = isset($data['displayorder']) ? $data['displayorder'] : 0;
|
||
$data['cid'] = intval($index['id']); // 内容id
|
||
$data['catid'] = intval($index['catid']); // 栏目id
|
||
// 插入主表
|
||
$table = $mid.'_form_'.$tid;
|
||
$rt = $this->table_site($table)->insert($data);
|
||
if (!$rt['code']) {
|
||
return $rt;
|
||
}
|
||
$etable = dr_mform_ctable($mid, $tid, $data['cid'], 0);
|
||
if ($table != $etable) {
|
||
// 备用表
|
||
$this->table_site($etable)->replace($data);
|
||
}
|
||
$data['id'] = $rt['code'];
|
||
if ($data2) {
|
||
// 如果要使用附表分表就 按一定量进行分表设置 比如50000
|
||
$data['tableid'] = \Phpcmf\Service::M()->get_table_id($rt['code']);
|
||
if ($data['tableid'] > 0) {
|
||
// 判断附表是否存在,不存在则创建
|
||
$this->is_data_table(SITE_ID.'_'.$mid.'_form_'.$tid.'_data_', $data['tableid']);
|
||
// 更新tableid到主表
|
||
$this->table_site($mid.'_form_'.$tid)->update($data['id'], ['tableid' => $data['tableid']]);
|
||
if ($table != $etable) {
|
||
// 备用表
|
||
$this->table_site($etable)->update($data['id'], ['tableid' => $data['tableid']]);
|
||
}
|
||
}
|
||
$data2['id'] = $data['id'];
|
||
$data2['uid'] = $data['uid'];
|
||
$data2['cid'] = $data['cid']; // 内容id
|
||
$data2['catid'] = $data['catid']; // 栏目id
|
||
// 插入附表
|
||
$rt2 = $this->table_site($mid.'_form_'.$tid.'_data_'.$data['tableid'])->insert($data2);
|
||
if (!$rt2['code']) {
|
||
// 删除主表
|
||
$this->table_site($mid.'_form_'.$tid)->delete($data['id']);
|
||
if ($table != $etable) {
|
||
// 备用表
|
||
$this->table_site($etable)->delete($data['id']);
|
||
}
|
||
return $rt2;
|
||
}
|
||
}
|
||
if ($table != $etable) {
|
||
// 备用表
|
||
$total = $this->table_site($etable)->where('status', 1)->where('cid', $data['cid'])->counts();
|
||
} else {
|
||
$total = $this->table_site($mid.'_form_'.$tid)->where('status', 1)->where('cid', $data['cid'])->counts();
|
||
}
|
||
|
||
$this->table_site($mid)->update($data['cid'], [
|
||
$tid.'_total' => $total,
|
||
]);
|
||
|
||
return $rt;
|
||
}
|
||
|
||
|
||
// 模块表单内容地址
|
||
public function show_url($form, $id, $mid = '', $page = 0) {
|
||
|
||
// 模块目录识别
|
||
defined('MOD_DIR') && MOD_DIR && $dir = MOD_DIR;
|
||
$mid && $dir = $mid;
|
||
|
||
$module = \Phpcmf\Service::L('cache')->get('module-' . SITE_ID . '-' . $dir);
|
||
|
||
return \Phpcmf\Service::L('router')->url_prefix('php', $module, [], SITE_FID) . 'c=' . $form . '&m=show&id=' . $id . ($page > 1 || strlen($page) > 1 ? '&page=' . $page : '');
|
||
}
|
||
|
||
|
||
// 模块表单提交地址
|
||
public function post_url($form, $cid, $mid = '') {
|
||
|
||
// 模块目录识别
|
||
defined('MOD_DIR') && MOD_DIR && $dir = MOD_DIR;
|
||
$mid && $dir = $mid;
|
||
|
||
$module = \Phpcmf\Service::L('cache')->get('module-' . SITE_ID . '-' . $dir);
|
||
|
||
return \Phpcmf\Service::L('router')->url_prefix('php', $module, [], SITE_FID) . 'c=' . $form . '&m=post&cid=' . $cid;
|
||
}
|
||
|
||
|
||
// 模块表单列表地址
|
||
public function list_url($form, $cid, $mid = '', $page = 0) {
|
||
|
||
// 模块目录识别
|
||
defined('MOD_DIR') && MOD_DIR && $dir = MOD_DIR;
|
||
$mid && $dir = $mid;
|
||
|
||
$module = \Phpcmf\Service::L('cache')->get('module-' . SITE_ID . '-' . $dir);
|
||
|
||
return \Phpcmf\Service::L('router')->url_prefix('php', $module, [], SITE_FID) . 'c=' . $form . '&m=index&cid=' . $cid . ($page > 1 || strlen($page) > 1 ? '&page=' . $page : '');
|
||
}
|
||
|
||
/**
|
||
* 删除模块内容时的联动
|
||
*/
|
||
public function delete_content($id, $siteid, $dirname) {
|
||
|
||
if (!$id) {
|
||
return;
|
||
}
|
||
|
||
$module = \Phpcmf\Service::L('cache')->get('module-' . SITE_ID . '-' . $dirname);
|
||
if ($module['form']) {
|
||
foreach ($module['form'] as $m) {
|
||
$table = $this->dbprefix(dr_module_table_prefix($dirname).'_form_'.$m['table']);
|
||
// 判断模块是否存在表
|
||
if ($this->is_table_exists($table)) {
|
||
$this->db->table($table)->where('cid', $id)->delete();
|
||
$this->db->table($table.'_data_0')->where('cid', $id)->delete();
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
// 更新统计字段
|
||
public function update_form_total($cid, $form) {
|
||
$total = $this->table(dr_mform_ctable(APP_DIR, $form, $cid))
|
||
->where('status', 1)
|
||
->where('cid', $cid)
|
||
->counts();
|
||
$this->table(dr_module_table_prefix(APP_DIR))->update($cid, [
|
||
$form.'_total' => $total,
|
||
]);
|
||
}
|
||
} |