Module: Party::Boy::FriendlyInstanceMethods

Defined in:
lib/party_boy.rb

Instance Method Summary collapse

Instance Method Details

#deny_friendship(friendship_or_something) ⇒ Object



207
208
209
# File 'lib/party_boy.rb', line 207

def deny_friendship(friendship_or_something)
	(rel = relationship_from(friendship_or_something)) && rel.destroy
end

#extended_networkObject



175
176
177
# File 'lib/party_boy.rb', line 175

def extended_network
	friends.collect{|friend| friend.methods.include?('friends') && friend.friends || []}.flatten.uniq - [self]
end

#friend_countObject



197
198
199
200
# File 'lib/party_boy.rb', line 197

def friend_count
	arr = [self.id, super_class_name]
	Relationship.accepted.count(:conditions => ['(requestor_id = ? AND requestor_type = ?) OR (requestee_id = ? and requestee_type = ?)', arr, arr].flatten)
end

#friendsObject



171
172
173
# File 'lib/party_boy.rb', line 171

def friends
	(outgoing_friendships.accepted + incoming_friendships.accepted).collect{|relationship| [relationship.requestor, relationship.requestee]}.flatten.uniq - [self]
end

#friends_with?(something) ⇒ Boolean

Returns:

  • (Boolean)


187
188
189
190
# File 'lib/party_boy.rb', line 187

def friends_with?(something)
	arr = something && [self.id, super_class_name, super_class_name(something), something.id]
	arr && Relationship.accepted.count(:conditions => [(['(requestor_id = ? AND requestor_type = ? AND requestee_type = ? AND requestee_id = ?)']*2).join(' OR '), arr, arr.reverse].flatten) > 0
end

#incoming_friend_requestsObject



183
184
185
# File 'lib/party_boy.rb', line 183

def incoming_friend_requests
	self.incoming_friendships.unaccepted.all
end

#outgoing_friend_requestsObject



179
180
181
# File 'lib/party_boy.rb', line 179

def outgoing_friend_requests
	self.outgoing_friendships.unaccepted.all
end

#pending?(something) ⇒ Boolean

Returns:

  • (Boolean)


192
193
194
195
# File 'lib/party_boy.rb', line 192

def pending?(something)
	arr = something && [self.id, super_class_name, super_class_name(something), something.id]
	arr && Relationship.unaccepted.count(:conditions => [(['(requestor_id = ? AND requestor_type = ? AND requestee_type = ? AND requestee_id = ?)']*2).join(' OR '), arr, arr.reverse].flatten) > 0
end

#request_friendship(friendship_or_something) ⇒ Object Also known as: accept_friendship



202
203
204
205
# File 'lib/party_boy.rb', line 202

def request_friendship(friendship_or_something)
	relationship = relationship_from(friendship_or_something)
	relationship.nil? && Relationship.create(:requestor => self, :requestee => friendship_or_something, :restricted => true) || (relationship.requestee == self && relationship.update_attributes(:restricted => false))
end