1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-06 15:41:33 +00:00

Moved implementation to Principal.

git-svn-id: http://svn.redmine.org/redmine/trunk@14500 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2015-08-15 06:57:55 +00:00
parent b66358ac6c
commit eac2974e71
2 changed files with 25 additions and 21 deletions

View File

@ -543,26 +543,6 @@ class MailHandler < ActionMailer::Base
end
def find_assignee_from_keyword(keyword, issue)
keyword = keyword.to_s
return nil if keyword.blank?
assignable = issue.assignable_users
assignee = nil
assignee ||= assignable.detect {|a|
keyword.casecmp(a.mail.to_s) == 0 ||
keyword.casecmp(a.login.to_s) == 0
}
if assignee.nil? && keyword.match(/ /)
firstname, lastname = *(keyword.split) # "First Last Throwaway"
assignee ||= assignable.detect {|a|
a.is_a?(User) &&
firstname.casecmp(a.firstname.to_s) == 0 &&
lastname.casecmp(a.lastname.to_s) == 0
}
end
if assignee.nil?
assignee ||= assignable.detect {|a| keyword.casecmp(a.name) == 0}
end
assignee
Principal.detect_by_keyword(issue.assignable_users, keyword)
end
end

View File

@ -146,6 +146,30 @@ class Principal < ActiveRecord::Base
columns.uniq.map {|field| "#{table}.#{field}"}
end
# Returns the principal that matches the keyword among principals
def self.detect_by_keyword(principals, keyword)
keyword = keyword.to_s
return nil if keyword.blank?
principal = nil
principal ||= principals.detect {|a|
keyword.casecmp(a.mail.to_s) == 0 ||
keyword.casecmp(a.login.to_s) == 0
}
if principal.nil? && keyword.match(/ /)
firstname, lastname = *(keyword.split) # "First Last Throwaway"
principal ||= principals.detect {|a|
a.is_a?(User) &&
firstname.casecmp(a.firstname.to_s) == 0 &&
lastname.casecmp(a.lastname.to_s) == 0
}
end
if principal.nil?
principal ||= principals.detect {|a| keyword.casecmp(a.name) == 0}
end
principal
end
protected
# Make sure we don't try to insert NULL values (see #4632)