Module: ActiveRecord::Acts::MuckFriend::SingletonMethods
- Defined in:
- lib/active_record/acts/muck_friend.rb
Overview
class methods
Instance Method Summary collapse
-
#add_follower(inviter, invited) ⇒ Object
When enable_following is true this will setup a follower.
- #block_user(user, target) ⇒ Object
- #blocked?(user, target) ⇒ Boolean
- #friendship_with(user, target) ⇒ Object
- #has_network?(user) ⇒ Boolean
-
#make_friends(user, target) ⇒ Object
Called after add_follower.
-
#revert_to_follower(user, target) ⇒ Object
Stop friendship with another user.
-
#stop_being_friends(user, target) ⇒ Object
Destroy the frienship :(.
-
#stop_following(user, target) ⇒ Object
User stops following target.
- #unblock_user(user, target) ⇒ Object
Instance Method Details
#add_follower(inviter, invited) ⇒ Object
When enable_following is true this will setup a follower. When enable_following is false the system only allows friends and so this becomes a friend request
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/active_record/acts/muck_friend.rb', line 27 def add_follower(inviter, invited) return false if inviter.blank? || invited.blank? || inviter == invited success = false transaction do friend = Friend.create(:inviter => inviter, :invited => invited, :status => MuckFriends::FOLLOWING) friend.add_follow_activity success = !friend.new_record? end success end |
#block_user(user, target) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/active_record/acts/muck_friend.rb', line 92 def block_user(user, target) return false if user.blank? || target.blank? friend = Friend.find(:first, :conditions => {:inviter_id => user.id, :invited_id => target.id}) friend.destroy if friend friend = Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id}) if friend friend.update_attribute(:status, MuckFriends::BLOCKED) else false end end |
#blocked?(user, target) ⇒ Boolean
114 115 116 |
# File 'lib/active_record/acts/muck_friend.rb', line 114 def blocked?(user, target) !Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id, :status => MuckFriends::BLOCKED}).blank? end |
#friendship_with(user, target) ⇒ Object
122 123 124 |
# File 'lib/active_record/acts/muck_friend.rb', line 122 def friendship_with(user, target) Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id}) end |
#has_network?(user) ⇒ Boolean
118 119 120 |
# File 'lib/active_record/acts/muck_friend.rb', line 118 def has_network?(user) !self.find(:first, :conditions => ["invited_id = ? or inviter_id = ?", user.id, user.id]).blank? end |
#make_friends(user, target) ⇒ Object
Called after add_follower. This establishes a friend relationship between the two parties
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/active_record/acts/muck_friend.rb', line 39 def make_friends(user, target) return false if user.blank? || target.blank? || user == target transaction do begin Friend.find(:first, :conditions => {:inviter_id => user.id, :invited_id => target.id, :status => MuckFriends::FOLLOWING}).update_attribute(:status, MuckFriends::FRIENDING) friend = Friend.create!(:inviter_id => target.id, :invited_id => user.id, :status => MuckFriends::FRIENDING) friend.add_friends_with_activity rescue Exception return make_friends(target, user) if user.followed_by?(target) return add_follower(user, target) end end true end |
#revert_to_follower(user, target) ⇒ Object
Stop friendship with another user. This will turn the other user into a follower
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/active_record/acts/muck_friend.rb', line 67 def revert_to_follower(user, target) return false if user.blank? || target.blank? transaction do friend = Friend.find(:first, :conditions => {:inviter_id => user.id, :invited_id => target.id}) friend.destroy if friend friend = Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id}) if friend return friend.update_attribute(:status, MuckFriends::FOLLOWING) else return false end end end |
#stop_being_friends(user, target) ⇒ Object
Destroy the frienship :(
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/active_record/acts/muck_friend.rb', line 55 def stop_being_friends(user, target) return false if user.blank? || target.blank? transaction do friend = Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id}) friend.destroy if friend friend = Friend.find(:first, :conditions => {:inviter_id => user.id, :invited_id => target.id}) friend.destroy if friend end true end |
#stop_following(user, target) ⇒ Object
User stops following target
82 83 84 85 86 87 88 89 90 |
# File 'lib/active_record/acts/muck_friend.rb', line 82 def stop_following(user, target) return false if user.blank? || target.blank? friend = Friend.find(:first, :conditions => {:inviter_id => user.id, :invited_id => target.id}) if friend friend.destroy else false end end |
#unblock_user(user, target) ⇒ Object
104 105 106 107 108 109 110 111 112 |
# File 'lib/active_record/acts/muck_friend.rb', line 104 def unblock_user(user, target) return false if user.blank? || target.blank? friend = Friend.find(:first, :conditions => {:inviter_id => target.id, :invited_id => user.id}) if friend friend.update_attribute(:status, MuckFriends::FOLLOWING) else false end end |