public function executeFriendRequest(sfWebRequest $request) { $memberId = $this->getUser()->getMemberId(); if (isset($request['member_id'])) { $targetMemberId = $request['member_id']; } elseif (isset($request['id'])) { $targetMemberId = $request['id']; } else { $this->forward400('member_id parameter not specified.'); } if ($memberId === $targetMemberId) { $this->forward400('Friend request to myself is not allowed.'); } $relation = Doctrine::getTable('MemberRelationship')->retrieveByFromAndTo($memberId, $targetMemberId); if (!$relation) { $relation = new MemberRelationship(); $relation->setMemberIdFrom($memberId); $relation->setMemberIdTo($targetMemberId); } if (isset($request['unlink'])) { if (!$relation->isFriend()) { $this->forward400('This member is not your friend.'); } $relation->removeFriend(); } else { if ($relation->isAccessBlocked()) { $this->forward403('Friend request is blocked.'); } if ($relation->isFriend()) { $this->forward400('This member already belongs to your friend.'); } if ($relation->isFriendPreFrom()) { $this->forward400('Friend request is already sent.'); } $relation->setFriendPre(); } $relation->free(true); return $this->renderJSON(array('status' => 'success')); }
//------------------------------------------------------------ $t->diag('MemberRelationship::isSelf()'); $t->ok(!$dummyRelation1->isSelf()); $t->ok($dummyRelation2->isSelf()); //------------------------------------------------------------ $t->diag('MemberRelationship::isAccessBlocked()'); $t->ok(!$relation4->isAccessBlocked()); $t->ok($dummyRelation3->isAccessBlocked()); //------------------------------------------------------------ $t->diag('MemberRelationship::setFriendPre()'); $t->ok(!$newRelation1->isFriendPre()); $newRelation1->setFriendPre(); $t->ok($newRelation1->isFriendPre()); //------------------------------------------------------------ $t->diag('MemberRelationship::setFriend()'); $t->ok(!$newRelation1->isFriend()); $newRelation1->setFriend(); $t->ok($newRelation1->isFriend()); //------------------------------------------------------------ $t->diag('MemberRelationship::removeFriend()'); $t->ok($newRelation1->isFriend()); $newRelation1->removeFriend(); $t->ok(!$newRelation1->isFriend()); //------------------------------------------------------------ $t->diag('MemberRelationship::removeFriendPre()'); $newRelation1->setFriendPre(); $t->ok($newRelation1->isFriendPre()); $newRelation1->removeFriendPre(); $t->ok(!$newRelation1->isFriendPre()); //------------------------------------------------------------ $t->diag('MemberRelationship::getToInstance()');