module_blog_categories.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package modules
  2. import (
  3. "html"
  4. "strings"
  5. "golang-fave/engine/wrapper"
  6. "golang-fave/utils"
  7. )
  8. func (this *Modules) blog_GetCategorySelectOptions(wrap *wrapper.Wrapper, id int, parentId int) string {
  9. result := ``
  10. rows, err := wrap.DB.Query(
  11. `SELECT
  12. node.id,
  13. node.user,
  14. node.name,
  15. node.alias,
  16. (COUNT(parent.id) - 1) AS depth
  17. FROM
  18. blog_cats AS node,
  19. blog_cats AS parent
  20. WHERE
  21. node.lft BETWEEN parent.lft AND parent.rgt
  22. GROUP BY
  23. node.id
  24. ORDER BY
  25. node.lft ASC
  26. ;`,
  27. )
  28. if err == nil {
  29. values := make([]string, 5)
  30. scan := make([]interface{}, len(values))
  31. for i := range values {
  32. scan[i] = &values[i]
  33. }
  34. idStr := utils.IntToStr(id)
  35. parentIdStr := utils.IntToStr(parentId)
  36. for rows.Next() {
  37. err = rows.Scan(scan...)
  38. if err == nil {
  39. disabled := ""
  40. if string(values[0]) == idStr {
  41. disabled = " disabled"
  42. }
  43. selected := ""
  44. if string(values[0]) == parentIdStr {
  45. selected = " selected"
  46. }
  47. sub := strings.Repeat("— ", utils.StrToInt(string(values[4])))
  48. result += `<option value="` + html.EscapeString(string(values[0])) + `"` + disabled + selected + `>` + sub + html.EscapeString(string(values[2])) + `</option>`
  49. }
  50. }
  51. }
  52. return result
  53. }
  54. func (this *Modules) blog_GetCategoryParentId(wrap *wrapper.Wrapper, id int) int {
  55. var parentId int
  56. _ = wrap.DB.QueryRow(`
  57. SELECT
  58. parent.id
  59. FROM
  60. blog_cats AS node,
  61. blog_cats AS parent
  62. WHERE
  63. node.lft BETWEEN parent.lft AND parent.rgt AND
  64. node.id = ? AND
  65. parent.id <> ?
  66. ORDER BY
  67. parent.lft DESC
  68. LIMIT 1;`,
  69. id,
  70. id,
  71. ).Scan(
  72. &parentId,
  73. )
  74. return parentId
  75. }