Commit b429b47a264d5d2730186b87ebdbf134a906aefa
1 parent
6d5e63f5
Exists in
master
and in
29 other branches
Invite users through profile id
Showing
2 changed files
with
24 additions
and
4 deletions
Show diff stats
app/models/invitation.rb
| @@ -50,7 +50,10 @@ class Invitation < Task | @@ -50,7 +50,10 @@ class Invitation < Task | ||
| 50 | next if contact_to_invite == _("Firstname Lastname <friend@email.com>") | 50 | next if contact_to_invite == _("Firstname Lastname <friend@email.com>") |
| 51 | 51 | ||
| 52 | contact_to_invite.strip! | 52 | contact_to_invite.strip! |
| 53 | - if match = contact_to_invite.match(/(.*)<(.*)>/) and match[2].match(Noosfero::Constants::EMAIL_FORMAT) | 53 | + find_by_profile_id = false |
| 54 | + if contact_to_invite.match(/^\d*$/) | ||
| 55 | + find_by_profile_id = true | ||
| 56 | + elsif match = contact_to_invite.match(/(.*)<(.*)>/) and match[2].match(Noosfero::Constants::EMAIL_FORMAT) | ||
| 54 | friend_name = match[1].strip | 57 | friend_name = match[1].strip |
| 55 | friend_email = match[2] | 58 | friend_email = match[2] |
| 56 | elsif match = contact_to_invite.strip.match(Noosfero::Constants::EMAIL_FORMAT) | 59 | elsif match = contact_to_invite.strip.match(Noosfero::Constants::EMAIL_FORMAT) |
| @@ -60,11 +63,15 @@ class Invitation < Task | @@ -60,11 +63,15 @@ class Invitation < Task | ||
| 60 | next | 63 | next |
| 61 | end | 64 | end |
| 62 | 65 | ||
| 63 | - user = User.find_by_email(friend_email) | 66 | + begin |
| 67 | + user = find_by_profile_id ? Person.find_by_id(contact_to_invite).user : User.find_by_email(friend_email) | ||
| 68 | + rescue | ||
| 69 | + user = nil | ||
| 70 | + end | ||
| 64 | 71 | ||
| 65 | - task_args = if user.nil? | 72 | + task_args = if user.nil? && !find_by_profile_id |
| 66 | {:person => person, :friend_name => friend_name, :friend_email => friend_email, :message => message} | 73 | {:person => person, :friend_name => friend_name, :friend_email => friend_email, :message => message} |
| 67 | - elsif !(user.person.is_a_friend?(person) && profile.person?) | 74 | + elsif user.present? && !(user.person.is_a_friend?(person) && profile.person?) |
| 68 | {:person => person, :target => user.person} | 75 | {:person => person, :target => user.person} |
| 69 | end | 76 | end |
| 70 | 77 |
test/unit/invitation_test.rb
| @@ -120,4 +120,17 @@ class InvitationTest < ActiveSupport::TestCase | @@ -120,4 +120,17 @@ class InvitationTest < ActiveSupport::TestCase | ||
| 120 | should 'have a message with url' do | 120 | should 'have a message with url' do |
| 121 | assert_equal "\n\nTo accept invitation, please follow this link: <url>", Invitation.default_message_to_accept_invitation | 121 | assert_equal "\n\nTo accept invitation, please follow this link: <url>", Invitation.default_message_to_accept_invitation |
| 122 | end | 122 | end |
| 123 | + | ||
| 124 | + should 'invite friends through profile id' do | ||
| 125 | + person = create_user('testuser1').person | ||
| 126 | + friend = create_user('testuser2').person | ||
| 127 | + community = fast_create(Community) | ||
| 128 | + | ||
| 129 | + assert_difference InviteMember, :count do | ||
| 130 | + Invitation.invite(person, [friend.id.to_s], 'hello friend <url>', community) | ||
| 131 | + end | ||
| 132 | + assert_difference InviteFriend, :count do | ||
| 133 | + Invitation.invite(person, [friend.id.to_s], 'hello friend <url>', person) | ||
| 134 | + end | ||
| 135 | + end | ||
| 123 | end | 136 | end |