invite_friend.rb
1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class InviteFriend < Task
acts_as_having_settings :group_for_person, :group_for_friend, :message, :friend_name, :friend_email, :field => :data
validates_presence_of :requestor_id
validates_presence_of :target_id, :if => Proc.new{|invite| invite.friend_email.blank? }
validates_presence_of :friend_email, :if => Proc.new{|invite| invite.target_id.blank? }
validates_format_of :friend_email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => Proc.new{|invite| invite.target_id.blank? }
validates_presence_of :message, :if => Proc.new{|invite| invite.target_id.blank? }
validates_format_of :message, :with => /<url>/, :if => Proc.new{|invite| invite.target_id.blank? }
alias :person :requestor
alias :person= :requestor=
alias :friend :target
alias :friend= :target=
after_create do |task|
TaskMailer.deliver_invitation_notification(task) unless task.friend
end
def perform
requestor.add_friend(target, group_for_person)
target.add_friend(requestor, group_for_friend)
end
# Returns <tt>false</tt>. Adding friends by itself does not trigger e-mail
# sending.
def sends_email?
false
end
def description
_('%s wants to be your friend.') % [requestor.name]
end
def permission
:manage_friends
end
end