@@ -543,26 +543,6 class MailHandler < ActionMailer::Base | |||
|
543 | 543 | end |
|
544 | 544 | |
|
545 | 545 | def find_assignee_from_keyword(keyword, issue) |
|
546 | keyword = keyword.to_s | |
|
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 | |
|
546 | Principal.detect_by_keyword(issue.assignable_users, keyword) | |
|
567 | 547 | end |
|
568 | 548 | end |
@@ -146,6 +146,30 class Principal < ActiveRecord::Base | |||
|
146 | 146 | columns.uniq.map {|field| "#{table}.#{field}"} |
|
147 | 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 | 173 | protected |
|
150 | 174 | |
|
151 | 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