|
@@ -1,6 +1,7 @@
|
|
package models
|
|
package models
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "fmt"
|
|
"regexp"
|
|
"regexp"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -36,6 +37,15 @@ func need_escape(keyword string) bool {
|
|
return false
|
|
return false
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func escape_name(name string) string {
|
|
|
|
+ dbadapter, _ := web.AppConfig.String("db_adapter")
|
|
|
|
+ ch := "`"
|
|
|
|
+ if strings.EqualFold(dbadapter, "postgres") {
|
|
|
|
+ ch = `"`
|
|
|
|
+ }
|
|
|
|
+ return fmt.Sprintf("%s%s%s", ch, name, ch)
|
|
|
|
+}
|
|
|
|
+
|
|
func NewDocumentSearchResult() *DocumentSearchResult {
|
|
func NewDocumentSearchResult() *DocumentSearchResult {
|
|
return &DocumentSearchResult{}
|
|
return &DocumentSearchResult{}
|
|
}
|
|
}
|
|
@@ -294,7 +304,7 @@ WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0 or team.team_member_
|
|
func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int) (docs []*DocumentSearchResult, err error) {
|
|
func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int) (docs []*DocumentSearchResult, err error) {
|
|
o := orm.NewOrm()
|
|
o := orm.NewOrm()
|
|
|
|
|
|
- sql := "SELECT * FROM md_documents WHERE book_id = ? AND (document_name LIKE ? OR `release` LIKE ?) "
|
|
|
|
|
|
+ sql := fmt.Sprintf("SELECT * FROM md_documents WHERE book_id = ? AND (document_name LIKE ? OR %s LIKE ?) ", escape_name("release"))
|
|
keyword = "%" + keyword + "%"
|
|
keyword = "%" + keyword + "%"
|
|
|
|
|
|
_need_escape := need_escape(keyword)
|
|
_need_escape := need_escape(keyword)
|
|
@@ -304,7 +314,6 @@ func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int) (docs
|
|
}
|
|
}
|
|
return sql
|
|
return sql
|
|
}
|
|
}
|
|
-
|
|
|
|
_, err = o.Raw(escape_sql(sql), bookId, keyword, keyword).QueryRows(&docs)
|
|
_, err = o.Raw(escape_sql(sql), bookId, keyword, keyword).QueryRows(&docs)
|
|
|
|
|
|
return
|
|
return
|
|
@@ -314,7 +323,7 @@ func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int) (docs
|
|
func (m *DocumentSearchResult) SearchAllDocument(keyword string) (docs []*DocumentSearchResult, err error) {
|
|
func (m *DocumentSearchResult) SearchAllDocument(keyword string) (docs []*DocumentSearchResult, err error) {
|
|
o := orm.NewOrm()
|
|
o := orm.NewOrm()
|
|
|
|
|
|
- sql := "SELECT * FROM md_documents WHERE (document_name LIKE ? OR `release` LIKE ?) "
|
|
|
|
|
|
+ sql := fmt.Sprintf("SELECT * FROM md_documents WHERE (document_name LIKE ? OR %s LIKE ?) ", escape_name("release"))
|
|
keyword = "%" + keyword + "%"
|
|
keyword = "%" + keyword + "%"
|
|
|
|
|
|
_need_escape := need_escape(keyword)
|
|
_need_escape := need_escape(keyword)
|