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:
parent
b66358ac6c
commit
eac2974e71
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user