@@ -72,14 +72,8 module Redmine | |||||
72 | tokens = [] << tokens unless tokens.is_a?(Array) |
|
72 | tokens = [] << tokens unless tokens.is_a?(Array) | |
73 | projects = [] << projects unless projects.nil? || projects.is_a?(Array) |
|
73 | projects = [] << projects unless projects.nil? || projects.is_a?(Array) | |
74 |
|
74 | |||
75 | find_options = {:include => searchable_options[:include]} |
|
|||
76 | find_options[:order] = "#{searchable_options[:order_column]} " + (options[:before] ? 'DESC' : 'ASC') |
|
|||
77 |
|
||||
78 | limit_options = {} |
|
75 | limit_options = {} | |
79 | limit_options[:limit] = options[:limit] if options[:limit] |
|
76 | limit_options[:limit] = options[:limit] if options[:limit] | |
80 | if options[:offset] |
|
|||
81 | limit_options[:conditions] = "(#{searchable_options[:date_column]} " + (options[:before] ? '<' : '>') + "'#{connection.quoted_date(options[:offset])}')" |
|
|||
82 | end |
|
|||
83 |
|
77 | |||
84 | columns = searchable_options[:columns] |
|
78 | columns = searchable_options[:columns] | |
85 | columns = columns[0..0] if options[:titles_only] |
|
79 | columns = columns[0..0] if options[:titles_only] | |
@@ -98,9 +92,9 module Redmine | |||||
98 |
|
92 | |||
99 | sql = (['(' + token_clauses.join(' OR ') + ')'] * tokens.size).join(options[:all_words] ? ' AND ' : ' OR ') |
|
93 | sql = (['(' + token_clauses.join(' OR ') + ')'] * tokens.size).join(options[:all_words] ? ' AND ' : ' OR ') | |
100 |
|
94 | |||
101 |
|
|
95 | tokens_conditions = [sql, * (tokens.collect {|w| "%#{w.downcase}%"} * token_clauses.size).sort] | |
102 |
|
96 | |||
103 | scope = self |
|
97 | scope = self.scoped | |
104 | project_conditions = [] |
|
98 | project_conditions = [] | |
105 | if searchable_options.has_key?(:permission) |
|
99 | if searchable_options.has_key?(:permission) | |
106 | project_conditions << Project.allowed_to_condition(user, searchable_options[:permission] || :view_project) |
|
100 | project_conditions << Project.allowed_to_condition(user, searchable_options[:permission] || :view_project) | |
@@ -117,9 +111,19 module Redmine | |||||
117 | results = [] |
|
111 | results = [] | |
118 | results_count = 0 |
|
112 | results_count = 0 | |
119 |
|
113 | |||
120 | scope = scope.scoped({:conditions => project_conditions}).scoped(find_options) |
|
114 | scope = scope. | |
121 | results_count = scope.count(:all) |
|
115 | includes(searchable_options[:include]). | |
122 | results = scope.find(:all, limit_options) |
|
116 | order("#{searchable_options[:order_column]} " + (options[:before] ? 'DESC' : 'ASC')). | |
|
117 | where(project_conditions). | |||
|
118 | where(tokens_conditions) | |||
|
119 | ||||
|
120 | results_count = scope.count | |||
|
121 | ||||
|
122 | scope_with_limit = scope.limit(options[:limit]) | |||
|
123 | if options[:offset] | |||
|
124 | scope_with_limit = scope_with_limit.where("#{searchable_options[:date_column]} #{options[:before] ? '<' : '>'} ?", options[:offset]) | |||
|
125 | end | |||
|
126 | results = scope_with_limit.all | |||
123 |
|
127 | |||
124 | [results, results_count] |
|
128 | [results, results_count] | |
125 | end |
|
129 | end |
General Comments 0
You need to be logged in to leave comments.
Login now