diff options
Diffstat (limited to 'actions/friends/add.php')
-rw-r--r-- | actions/friends/add.php | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/actions/friends/add.php b/actions/friends/add.php index 3e1c9b2d4..c464a8162 100644 --- a/actions/friends/add.php +++ b/actions/friends/add.php @@ -1,32 +1,47 @@ <?php /** + * Elgg add friend action + * + * @package Elgg.Core + * @subpackage Friends.Management * @override actions/friends/add.php */ -$friend = get_entity(sanitize_int(get_input('friend'))); -$user = elgg_get_logged_in_user_entity(); -if(!elgg_instanceof($friend, 'user')){ - register_error(elgg_echo('friendrequest:add:failure')); +// Get the GUID of the user to friend +$friend_guid = get_input('friend'); +$friend = get_entity($friend_guid); +if (!$friend) { + register_error(elgg_echo('error:missing_data')); forward(REFERER); } +$user = elgg_get_logged_in_user_entity(); + +$errors = false; if(check_entity_relationship($friend->guid, "friendrequest", $user->guid) || check_entity_relationship($friend->guid, "friend", $user->guid)) { - - $user->addFriend($friend->guid); - $friend->addFriend($user->guid); - remove_entity_relationship($friend->guid, "friendrequest", $user->guid); - - add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); - add_to_river('river/relationship/friend/create', 'friend', $friend->guid, $user->guid); - system_message(elgg_echo("friends:add:successful", array($friend->name))); - + try { + if (!$user->addFriend($friend_guid)) { + $errors = true; + } + remove_entity_relationship($friend->guid, "friendrequest", $user->guid); + } catch (Exception $e) { + register_error(elgg_echo("friends:add:failure", array($friend->name))); + $errors = true; + } + if (!$errors) { + // add to river + add_to_river('river/relationship/friend/create', 'friend', $user->guid, $friend->guid); + add_to_river('river/relationship/friend/create', 'friend', $friend->guid, $user->guid); + system_message(elgg_echo("friends:add:successful", array($friend->name))); + } } elseif(add_entity_relationship($user->guid, "friendrequest", $friend->guid)) { system_message(elgg_echo("friendrequest:add:successful", array($friend->name))); } else { register_error(elgg_echo("friendrequest:add:exists", array($friend->name))); } +// Forward back to the page you friended the user on forward(REFERER); |