diff options
Diffstat (limited to 'actions/friends/remove.php')
-rw-r--r-- | actions/friends/remove.php | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/actions/friends/remove.php b/actions/friends/remove.php index 76716ebe6..936f6f43b 100644 --- a/actions/friends/remove.php +++ b/actions/friends/remove.php @@ -1,27 +1,36 @@ <?php /** + * Elgg remove friend action + * + * @package Elgg.Core + * @subpackage Friends.Management * @override actions/friends/remove.php */ -$friend = get_entity(sanitize_int(get_input('friend'))); -$user = elgg_get_logged_in_user_entity(); +// Get the GUID of the user to friend +$friend_guid = get_input('friend'); +$friend = get_entity($friend_guid); +$errors = false; -if(!elgg_instanceof($friend, 'user')){ - register_error(elgg_echo('friends:remove:failure', array($friend->name))); - forward(REFERER); +// Get the user +try{ + if ($friend instanceof ElggUser) { + elgg_get_logged_in_user_entity()->removeFriend($friend_guid); + $ia = elgg_set_ignore_access(true); + $friend->removeFriend($elgg_get_logged_in_user_guid()); + elgg_set_ignore_access($ia); + } else { + register_error(elgg_echo("friends:remove:failure", array($friend->name))); + $errors = true; + } +} catch (Exception $e) { + register_error(elgg_echo("friends:remove:failure", array($friend->name))); + $errors = true; } -if(check_entity_relationship($user->guid, "friend", $friend->guid)) { - try { - $user->removeFriend($friend->guid); - if(check_entity_relationship($friend->guid, "friend", $user->guid)){ - $friend->removeFriend($user->guid); - } - } catch (Exception $e) { - register_error(elgg_echo('friends:remove:failure', array($friend->name))); - forward(REFERER); - } +if (!$errors) { + system_message(elgg_echo("friends:remove:successful", array($friend->name))); } -system_message(elgg_echo('friends:remove:successful', array($friend->name))); +// Forward back to the page you made the friend on forward(REFERER); |