adminmsg('topiccate_copyfield_none'); } $query = $db->query("SELECT name,type,rules,descrip FROM pw_topicfield WHERE fieldid IN (" . S::sqlImplode($copyfield) . ")"); while ($rt = $db->fetch_array($query)) { $name = $db->get_value("SELECT name FROM pw_topicfield WHERE modelid=" . S::sqlEscape($modelid)); $db->update("INSERT INTO pw_topicfield SET " . S::sqlSingle(array('name' => $rt['name'], 'fieldname' => $rt['fieldname'], 'modelid' => $modelid, 'type' => $rt['type'], 'rules' => $rt['rules'], 'descrip' => $rt['descrip'])), false); $fieldid = $db->insert_id(); $fieldname = 'field' . $fieldid; $tablename = GetTopcitable($modelid); $db->update("UPDATE pw_topicfield SET fieldname=" . S::sqlEscape($fieldname) . " WHERE fieldid=" . S::sqlEscape($fieldid)); $ckfieldname = $db->get_one("SHOW COLUMNS FROM {$tablename} LIKE '{$fieldname}'"); if ($ckfieldname) { $db->update("DELETE FROM pw_topicfield WHERE fieldid=" . S::sqlEscape($fieldid)); Showmsg('field_have_exists'); } else { $sql = getFieldSqlByType($rt['type']); $db->query("ALTER TABLE {$tablename} ADD {$fieldname} {$sql}"); } } Showmsg('copy_field_success'); } elseif ($action == 'delfield') { define('AJAX', 1); S::gp(array('fieldid')); $ckfield = $db->get_one("SELECT fieldid,modelid FROM pw_topicfield WHERE fieldid=" . S::sqlEscape($fieldid)); if ($ckfield) { $tablename = GetTopcitable($ckfield['modelid']); $fieldname = 'field' . $ckfield['fieldid']; $db->update("DELETE FROM pw_topicfield WHERE fieldid=" . S::sqlEscape($fieldid)); $ckfield2 = $db->get_one("SHOW COLUMNS FROM {$tablename} LIKE '{$fieldname}'"); if ($ckfield2) { $db->query("ALTER TABLE {$tablename} DROP {$fieldname}");
} if (strlen($descrip) > 255) { Showmsg('field_descrip_limit'); } $db->update("INSERT INTO pw_pcfield SET " . pwSqlSingle(array('name' => $name, 'pcid' => $pcid, 'type' => $fieldtype, 'rules' => $s_rules, 'descrip' => $descrip))); $fieldid = $db->insert_id(); $fieldname = 'field' . $fieldid; $db->update("UPDATE pw_pcfield SET fieldname=" . pwEscape($fieldname) . " WHERE fieldid=" . pwEscape($fieldid)); /*$ckfieldname = $db->get_one("SHOW COLUMNS FROM $pcvaluetable LIKE '$fieldname'"); if ($ckfieldname) { Showmsg('field_have_exists'); } else { $sql = getFieldSqlByType($fieldtype); $db->query("ALTER TABLE $pcvaluetable ADD $fieldname $sql"); }*/ $sql = getFieldSqlByType($fieldtype); $db->query("ALTER TABLE {$pcvaluetable} ADD {$fieldname} {$sql}"); Showmsg('pcfield_add_success'); } } elseif ($action == 'editfield') { define('AJAX', 1); if (!$_POST['step']) { $ajax_basename_edit = EncodeUrl($basename . "&action=editfield"); InitGP(array('fieldid')); if (empty($fieldid)) { Showmsg('field_not_select'); } $fielddb = $db->get_one("SELECT name,fieldname,rules,type,descrip,ifdel FROM pw_pcfield WHERE fieldid=" . pwEscape($fieldid)); $count = $db->get_value("SELECT COUNT(*) FROM {$pcvaluetable} WHERE " . $fielddb['fieldname'] . " != ''"); //查找是否变量已有值 if ($count || $fielddb['ifdel']) {
/** * 将活动子分类的字段插入数据库 * @param int $actmid 活动子分类ID * @param string $fieldtype 字段类型 * @param string $name 字段名 * @param string $descrip 字段描述 * @param bool $isDefaultField 是否是默认字段(若是,不修改数据表) * @param array $option 其它可选参数 * @global DB 数据库 */ function insertActivityFieldToDb($actmid, $fieldtype, $name, $descrip, $isDefaultField = 0, $option = null) { global $db; is_array($option) || ($option = array()); $rules = $option['rules']; empty($fieldtype) && Showmsg('fieldtype_not_exists'); $s_rules = getFieldRules($fieldtype, $rules); if (strlen($descrip) > 255) { Showmsg('field_descrip_limit'); } $insertColumns = array('name' => $name, 'actmid' => $actmid, 'type' => $fieldtype, 'rules' => $s_rules, 'descrip' => $descrip); $optionalColumns = array('vieworder', 'ifable', 'ifsearch', 'ifasearch', 'threadshow', 'ifmust', 'ifdel', 'mustenable', 'textwidth', 'sectionname', 'issearchable', 'allowthreadshow'); $isDefaultField && ($optionalColumns[] = 'fieldname'); foreach ($optionalColumns as $column) { if (array_key_exists($column, $option)) { $insertColumns[$column] = $option[$column]; } } $db->update("INSERT INTO pw_activityfield SET " . S::sqlSingle($insertColumns)); if (!$isDefaultField) { //不是默认字段,则修改特殊字段表名 $fieldid = $db->insert_id(); $fieldname = 'field' . $fieldid; $db->update("UPDATE pw_activityfield SET fieldname=" . S::sqlEscape($fieldname) . " WHERE fieldid=" . S::sqlEscape($fieldid)); $userDefinedValueTableName = getActivityValueTableNameByActmid($actmid, 1, 1); $sql = getFieldSqlByType($fieldtype); $db->query("ALTER TABLE {$userDefinedValueTableName} ADD {$fieldname} {$sql}"); } }