2
0

api_list_recent_change.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package route
  2. import (
  3. "database/sql"
  4. "encoding/json"
  5. "fmt"
  6. "log"
  7. "opennamu/route/tool"
  8. "strconv"
  9. )
  10. func Api_list_recent_change(call_arg []string) {
  11. db_set := map[string]string{}
  12. json.Unmarshal([]byte(call_arg[0]), &db_set)
  13. other_set := map[string]string{}
  14. json.Unmarshal([]byte(call_arg[1]), &other_set)
  15. db := tool.DB_connect(db_set)
  16. if db == nil {
  17. return
  18. }
  19. defer db.Close()
  20. set_type := other_set["set_type"]
  21. if set_type == "edit" {
  22. set_type = ""
  23. }
  24. limit_int, err := strconv.Atoi(other_set["limit"])
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. if limit_int > 50 || limit_int < 0 {
  29. limit_int = 50
  30. }
  31. page_int, err := strconv.Atoi(other_set["num"])
  32. if err != nil {
  33. log.Fatal(err)
  34. }
  35. if page_int > 0 {
  36. page_int = (page_int * limit_int) - limit_int
  37. } else {
  38. page_int = 0
  39. }
  40. stmt, err := db.Prepare(tool.DB_change(db_set, "select id, title from rc where type = ? order by date desc limit ?, ?"))
  41. if err != nil {
  42. log.Fatal(err)
  43. }
  44. defer stmt.Close()
  45. rows, err := stmt.Query(set_type, page_int, limit_int)
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. defer rows.Close()
  50. var data_list [][]string
  51. admin_auth := tool.Get_user_auth(db, db_set, other_set["ip"])
  52. ip_parser_temp := map[string][]string{}
  53. for rows.Next() {
  54. var id string
  55. var title string
  56. err := rows.Scan(&id, &title)
  57. if err != nil {
  58. log.Fatal(err)
  59. }
  60. var date string
  61. var ip string
  62. var send string
  63. var leng string
  64. var hide string
  65. var type_data string
  66. stmt, err := db.Prepare(tool.DB_change(db_set, "select date, ip, send, leng, hide, type from history where id = ? and title = ?"))
  67. if err != nil {
  68. log.Fatal(err)
  69. }
  70. defer stmt.Close()
  71. err = stmt.QueryRow(id, title).Scan(&date, &ip, &send, &leng, &hide, &type_data)
  72. if err != nil {
  73. if err == sql.ErrNoRows {
  74. date = ""
  75. ip = ""
  76. send = ""
  77. leng = ""
  78. hide = ""
  79. type_data = ""
  80. } else {
  81. log.Fatal(err)
  82. }
  83. }
  84. var ip_pre string
  85. var ip_render string
  86. if _, ok := ip_parser_temp[ip]; ok {
  87. ip_pre = ip_parser_temp[ip][0]
  88. ip_render = ip_parser_temp[ip][1]
  89. } else {
  90. ip_pre = tool.IP_preprocess(db, db_set, ip, other_set["ip"])[0]
  91. ip_render = tool.IP_parser(db, db_set, ip, other_set["ip"])
  92. ip_parser_temp[ip] = []string{ip_pre, ip_render}
  93. }
  94. if hide == "" || admin_auth != "" {
  95. data_list = append(data_list, []string{
  96. id,
  97. title,
  98. date,
  99. ip_pre,
  100. send,
  101. leng,
  102. hide,
  103. ip_render,
  104. type_data,
  105. })
  106. } else {
  107. data_list = append(data_list, []string{"", "", "", "", "", "", hide, "", ""})
  108. }
  109. }
  110. if other_set["legacy"] != "" {
  111. if len(data_list) == 0 {
  112. fmt.Print("{}")
  113. } else {
  114. json_data, _ := json.Marshal(data_list)
  115. fmt.Print(string(json_data))
  116. }
  117. } else {
  118. auth_name := tool.Get_user_auth(db, db_set, other_set["ip"])
  119. auth_info := tool.Get_auth_group_info(db, db_set, auth_name)
  120. return_data := make(map[string]interface{})
  121. return_data["language"] = map[string]string{
  122. "tool": tool.Get_language(db, db_set, "tool", false),
  123. "normal": tool.Get_language(db, db_set, "normal", false),
  124. "edit": tool.Get_language(db, db_set, "edit", false),
  125. "move": tool.Get_language(db, db_set, "move", false),
  126. "delete": tool.Get_language(db, db_set, "delete", false),
  127. "revert": tool.Get_language(db, db_set, "revert", false),
  128. "new_doc": tool.Get_language(db, db_set, "new_doc", false),
  129. "edit_request": tool.Get_language(db, db_set, "edit_request", false),
  130. "user_document": tool.Get_language(db, db_set, "user_document", false),
  131. "raw": tool.Get_language(db, db_set, "raw", false),
  132. "compare": tool.Get_language(db, db_set, "compare", false),
  133. "history": tool.Get_language(db, db_set, "history", false),
  134. "hide": tool.Get_language(db, db_set, "hide", false),
  135. "history_delete": tool.Get_language(db, db_set, "history_delete", false),
  136. "send_edit": tool.Get_language(db, db_set, "send_edit", false),
  137. "file": tool.Get_language(db, db_set, "file", false),
  138. "category": tool.Get_language(db, db_set, "category", false),
  139. }
  140. return_data["auth"] = auth_info
  141. if len(data_list) == 0 {
  142. return_data["data"] = map[string]string{}
  143. } else {
  144. return_data["data"] = data_list
  145. }
  146. json_data, _ := json.Marshal(return_data)
  147. fmt.Print(string(json_data))
  148. }
  149. }