From 874b017362de61ca3fb2c81e6e417714c1baff2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Tue, 31 Mar 2015 13:23:34 +0200 Subject: [PATCH] search is broken on redmine3 #370 --- app/models/dmsf_file.rb | 15 ++++++++------- app/models/dmsf_folder.rb | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 2f125043..a2cf5f1d 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -1,4 +1,4 @@ -# encoding: utf-8 +/scoping/# encoding: utf-8 # # Redmine plugin for Document Management System "Features" # @@ -296,7 +296,7 @@ class DmsfFile < ActiveRecord::Base tokens = [] << tokens unless tokens.is_a?(Array) projects = [] << projects unless projects.nil? || projects.is_a?(Array) - find_options = {:include => [:project,:revisions]} + find_options = {} find_options[:order] = 'dmsf_files.updated_at ' + (options[:before] ? 'DESC' : 'ASC') limit_options = {} @@ -314,14 +314,15 @@ class DmsfFile < ActiveRecord::Base find_options[:conditions] = [sql, * (tokens.collect {|w| "%#{w.downcase}%"} * token_clauses.size).sort] project_conditions = [] - project_conditions << (Project.allowed_to_condition(User.current, :view_dmsf_files)) + project_conditions << Project.allowed_to_condition(User.current, :view_dmsf_files) project_conditions << "#{DmsfFile.table_name}.project_id IN (#{projects.collect(&:id).join(',')})" unless projects.nil? results = [] - results_count = 0 - - with_scope(:find => {:conditions => [project_conditions.join(' AND ') + " AND #{DmsfFile.table_name}.deleted = :false", {:false => false}]}) do - with_scope(:find => find_options) do + results_count = 0 + + includes(:project, :revisions). + where(project_conditions.join(' AND ') + " AND #{DmsfFile.table_name}.deleted = :false", {:false => false}).scoping do + where(find_options[:conditions]).order(find_options[:order]).scoping do results_count = count(:all) results = find(:all, limit_options) end diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 53ddc1f0..d2b032ca 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -282,11 +282,11 @@ class DmsfFolder < ActiveRecord::Base end # To fullfill searchable module expectations - def self.search(tokens, projects=nil, options={}) + def self.search(tokens, projects = nil, options = {}) tokens = [] << tokens unless tokens.is_a?(Array) projects = [] << projects unless projects.nil? || projects.is_a?(Array) - find_options = {:include => [:project]} + find_options = {} find_options[:order] = 'dmsf_folders.updated_at ' + (options[:before] ? 'DESC' : 'ASC') limit_options = {} @@ -295,7 +295,7 @@ class DmsfFolder < ActiveRecord::Base limit_options[:conditions] = '(dmsf_folders.updated_at ' + (options[:before] ? '<' : '>') + "'#{connection.quoted_date(options[:offset])}')" end - columns = options[:titles_only] ? ["dmsf_folders.title"] : ["dmsf_folders.title", "dmsf_folders.description"] + columns = options[:titles_only] ? ['dmsf_folders.title'] : ['dmsf_folders.title', 'dmsf_folders.description'] token_clauses = columns.collect {|column| "(LOWER(#{column}) LIKE ?)"} @@ -304,13 +304,14 @@ class DmsfFolder < ActiveRecord::Base project_conditions = [] project_conditions << (Project.allowed_to_condition(User.current, :view_dmsf_files)) - project_conditions << "project_id IN (#{projects.collect(&:id).join(',')})" unless projects.nil? + project_conditions << "project_id IN (#{projects.collect(&:id).join(',')})" if projects results = [] results_count = 0 - - with_scope(:find => {:conditions => [project_conditions.join(' AND ')]}) do - with_scope(:find => find_options) do + + includes(:project). + where(project_conditions.join(' AND ')).scoping do + where(find_options[:conditions]).order(find_options[:order]).scoping do results_count = count(:all) results = find(:all, limit_options) end