| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package route
- import (
- "database/sql"
- "opennamu/route/tool"
- "strings"
- )
- func Api_bbs_w_comment_one(config tool.Config, already_auth_check bool, do_type string, sub_code string) map[string]any {
- db := tool.DB_connect()
- defer tool.DB_close(db)
- sub_code_parts := strings.Split(sub_code, "-")
- sub_code_last := ""
- new_sub_code := ""
- if do_type == "around" {
- new_sub_code = sub_code
- } else {
- if len(sub_code_parts) > 2 {
- sub_code_last = sub_code_parts[len(sub_code_parts) - 1]
- sub_code_parts = sub_code_parts[:len(sub_code_parts) - 1]
- new_sub_code = strings.Join(sub_code_parts, "-")
- }
- }
- var rows *sql.Rows
- if do_type == "around" {
- rows = tool.Query_DB(
- db,
- "select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ?",
- new_sub_code,
- )
- } else {
- rows = tool.Query_DB(
- db,
- "select set_name, set_data, set_code, set_id from bbs_data where (set_name = 'comment' or set_name like 'comment%') and set_id = ? and set_code = ?",
- new_sub_code, sub_code_last,
- )
- }
- defer rows.Close()
- data_list := []map[string]string{}
- temp_dict := map[string]string{}
- ip_parser_temp := map[string][]string{}
- before_set_code := ""
- for rows.Next() {
- var set_name string
- var set_data string
- var set_code string
- var set_id string
- err := rows.Scan(&set_name, &set_data, &set_code, &set_id)
- if err != nil {
- panic(err)
- }
- if before_set_code != set_code {
- if before_set_code != "" {
- data_list = append(data_list, temp_dict)
- }
- temp_dict = map[string]string{}
- temp_dict["id"] = set_id
- temp_dict["code"] = set_code
- before_set_code = set_code
- }
- if set_name == "comment_user_id" {
- var ip_pre string
- var ip_render string
- if _, ok := ip_parser_temp[set_data]; ok {
- ip_pre = ip_parser_temp[set_data][0]
- ip_render = ip_parser_temp[set_data][1]
- } else {
- ip_pre = tool.IP_preprocess(db, set_data, config.IP)[0]
- ip_render = tool.IP_parser(db, set_data, config.IP)
- ip_parser_temp[set_data] = []string{ip_pre, ip_render}
- }
- temp_dict["comment_user_id"] = ip_pre
- temp_dict["comment_user_id_render"] = ip_render
- } else {
- temp_dict[set_name] = set_data
- }
- }
- if before_set_code != "" {
- data_list = append(data_list, temp_dict)
- }
- return_data := make(map[string]any)
- if !already_auth_check {
- if !tool.Check_acl(db, "", "", "bbs_comment", config.IP) {
- data_list = []map[string]string{}
- return_data["response"] = "require auth"
- }
- }
- if do_type == "around" {
- return_data["data"] = data_list
- } else {
- if len(data_list) > 0 {
- return_data["data"] = []map[string]string{
- data_list[0],
- }
- } else {
- return_data["data"] = []map[string]string{}
- }
- }
- return return_data
- }
|