##// END OF EJS Templates
Replaces find(:all) calls in acts_as_searchable....
Jean-Philippe Lang -
r10700:013c6fe009e7
parent child
Show More
@@ -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 find_options[:conditions] = [sql, * (tokens.collect {|w| "%#{w.downcase}%"} * token_clauses.size).sort]
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