Remove more references to 'group' and replace with 'team'
[gitorious:yousource.git] / app / models / membership.rb
1 #--
2 #   Copyright (C) 2009 Johan Sørensen <johan@johansorensen.com>
3 #
4 #   This program is free software: you can redistribute it and/or modify
5 #   it under the terms of the GNU Affero General Public License as published by
6 #   the Free Software Foundation, either version 3 of the License, or
7 #   (at your option) any later version.
8 #
9 #   This program is distributed in the hope that it will be useful,
10 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #   GNU Affero General Public License for more details.
13 #
14 #   You should have received a copy of the GNU Affero General Public License
15 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 #++
17
18 class Membership < ActiveRecord::Base
19   belongs_to :group
20   belongs_to :user
21   belongs_to :role
22   has_many :messages, :as => :notifiable, :dependent => :destroy
23
24   after_create :send_notification_if_invited
25   attr_accessor :inviter
26   
27   validates_presence_of :group_id, :user_id, :role_id
28   
29   def breadcrumb_parent
30     Breadcrumb::Memberships.new(group)
31   end
32   
33   def title
34     "Member"
35   end
36   
37   def self.build_invitation(inviter, options)
38     result = new(options.merge(:inviter => inviter))
39     return result
40   end
41   
42   
43   protected
44     def send_notification_if_invited
45       if inviter
46         send_notification
47       end
48     end
49     
50     def send_notification
51       message = Message.new(:sender => inviter, :recipient => user, :subject => "You have been added to a team", :body => "Welcome", :notifiable => self)
52       message.save      
53     end
54 end