@@ -543,26 +543,6 class MailHandler < ActionMailer::Base | |||||
543 | end |
|
543 | end | |
544 |
|
544 | |||
545 | def find_assignee_from_keyword(keyword, issue) |
|
545 | def find_assignee_from_keyword(keyword, issue) | |
546 | keyword = keyword.to_s |
|
546 | Principal.detect_by_keyword(issue.assignable_users, keyword) | |
547 | return nil if keyword.blank? |
|
|||
548 |
|
||||
549 | assignable = issue.assignable_users |
|
|||
550 | assignee = nil |
|
|||
551 | assignee ||= assignable.detect {|a| |
|
|||
552 | keyword.casecmp(a.mail.to_s) == 0 || |
|
|||
553 | keyword.casecmp(a.login.to_s) == 0 |
|
|||
554 | } |
|
|||
555 | if assignee.nil? && keyword.match(/ /) |
|
|||
556 | firstname, lastname = *(keyword.split) # "First Last Throwaway" |
|
|||
557 | assignee ||= assignable.detect {|a| |
|
|||
558 | a.is_a?(User) && |
|
|||
559 | firstname.casecmp(a.firstname.to_s) == 0 && |
|
|||
560 | lastname.casecmp(a.lastname.to_s) == 0 |
|
|||
561 | } |
|
|||
562 | end |
|
|||
563 | if assignee.nil? |
|
|||
564 | assignee ||= assignable.detect {|a| keyword.casecmp(a.name) == 0} |
|
|||
565 | end |
|
|||
566 | assignee |
|
|||
567 | end |
|
547 | end | |
568 | end |
|
548 | end |
@@ -146,6 +146,30 class Principal < ActiveRecord::Base | |||||
146 | columns.uniq.map {|field| "#{table}.#{field}"} |
|
146 | columns.uniq.map {|field| "#{table}.#{field}"} | |
147 | end |
|
147 | end | |
148 |
|
148 | |||
|
149 | # Returns the principal that matches the keyword among principals | |||
|
150 | def self.detect_by_keyword(principals, keyword) | |||
|
151 | keyword = keyword.to_s | |||
|
152 | return nil if keyword.blank? | |||
|
153 | ||||
|
154 | principal = nil | |||
|
155 | principal ||= principals.detect {|a| | |||
|
156 | keyword.casecmp(a.mail.to_s) == 0 || | |||
|
157 | keyword.casecmp(a.login.to_s) == 0 | |||
|
158 | } | |||
|
159 | if principal.nil? && keyword.match(/ /) | |||
|
160 | firstname, lastname = *(keyword.split) # "First Last Throwaway" | |||
|
161 | principal ||= principals.detect {|a| | |||
|
162 | a.is_a?(User) && | |||
|
163 | firstname.casecmp(a.firstname.to_s) == 0 && | |||
|
164 | lastname.casecmp(a.lastname.to_s) == 0 | |||
|
165 | } | |||
|
166 | end | |||
|
167 | if principal.nil? | |||
|
168 | principal ||= principals.detect {|a| keyword.casecmp(a.name) == 0} | |||
|
169 | end | |||
|
170 | principal | |||
|
171 | end | |||
|
172 | ||||
149 | protected |
|
173 | protected | |
150 |
|
174 | |||
151 | # Make sure we don't try to insert NULL values (see #4632) |
|
175 | # Make sure we don't try to insert NULL values (see #4632) |
General Comments 0
You need to be logged in to leave comments.
Login now