$db->query("INSERT INTO {$tblprefix}channels SET {$sqlstr}"); if ($chid = $db->insert_id()) { $db->query("CREATE TABLE {$tblprefix}archives_{$chid} (aid mediumint(8) unsigned NOT NULL default '0',PRIMARY KEY (aid))" . (mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET={$dbcharset}" : " TYPE=MYISAM")); //将系统的已有通用字段转入进来 foreach ($initfields as $field) { $sqlstr = "chid='{$chid}',available='1'"; foreach ($field as $key => $val) { !in_array($key, array('fid', 'chid', 'available')) && ($sqlstr .= (!$sqlstr ? '' : ',') . "{$key}='" . addslashes($val) . "'"); } $db->query("INSERT INTO {$tblprefix}fields SET {$sqlstr}"); if (!($fid = $db->insert_id())) { continue; } $stepadds['fields'][] = $fid; } cu_addfields($chid, $v['cuid']); //将模型专用的字段转入进来 $fields = oread_cache('fields', $k, '', 'cache'); foreach ($fields as $k1 => $v1) { if ($v1['tbl'] == 'custom') { //只转入模型定义的字段 $fieldnew = oread_cache('field', $k, $k1, 'cache'); $fieldnew = maddslashes($fieldnew); $fconfigarr = array('errorurl' => '', 'enamearr' => $usednames['fields'], 'altertable' => $tblprefix . 'archives_' . $chid, 'fieldtable' => $tblprefix . 'fields', 'sqlstr' => "chid={$chid},iscustom='1',available='1',tbl='custom'", 'filterstr' => "/[^a-zA-Z_0-9]+|^[0-9_]+|^ccid(.*?)/"); list($fmode, $fnew, $fsave) = array('a', true, true); include M_ROOT . "./include/fields/{$v1['datatype']}.php"; if (!($fid = $db->insert_id())) { continue; } $stepadds['fields'][] = $fid; //记录增加字段
$sqlstr = ''; if (@$commus[$channeladd['cuid']]['cclass'] == 'answer') { $sqlstr = "question text NOT NULL,"; } $customtable = "archives_{$chid}"; $db->query("CREATE TABLE {$tblprefix}{$customtable} (\n\t\t\t\t\t\taid mediumint(8) unsigned NOT NULL default '0',\n\t\t\t\t\t\t{$sqlstr}\n\t\t\t\t\t\tPRIMARY KEY (aid))" . (mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET={$dbcharset}" : " TYPE=MYISAM")); foreach ($initfields as $field) { $sqlstr = "chid='{$chid}',available='1'"; foreach ($field as $k => $v) { if (!in_array($k, array('fid', 'chid', 'available'))) { $sqlstr .= ",{$k}='" . addslashes($v) . "'"; } } $db->query("INSERT INTO {$tblprefix}fields SET {$sqlstr}"); } cu_addfields($chid, $channeladd['cuid']); updatecache('channels'); updatecache('fields', $chid); } adminlog(lang('add_arc_channel')); amessage('arcchanneladdfinish', "?entry=channels&action=channeledit{$param_suffix}"); } } elseif ($action == 'channelcopy' && $chid) { $forward = empty($forward) ? M_REFERER : $forward; if (!submitcheck('bchannelcopy')) { $channel = read_cache('channel', $chid); $fields = read_cache('fields', $chid); $cuidsarr = array(0 => lang('default')) + cuidsarr(); tabheader(lang('arc_channel_copy'), 'channelcopy', "?entry=channels&action=channelcopy&chid={$chid}&forward=" . rawurlencode($forward), 2, 0, 1); trbasic(lang('soc_channel_name'), '', $channel['cname'], ''); trbasic(lang('soc_ccommu_config'), '', $cuidsarr[$channel['cuid']], '');