'friendrequests', 'text' => elgg_echo('friendrequest'), 'href' => "friendrequests", 'contexts' => array('friends'), ); elgg_register_menu_item('page', $params); } //We need to override the friend remove action to remove the relationship we created $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friends'; elgg_register_action('friends/add', "$actions_dir/add.php"); elgg_register_action('friends/remove', "$actions_dir/remove.php"); $actions_dir = elgg_get_plugins_path().'friendrequest/actions/friendrequest'; elgg_register_action('friendrequest/decline', "$actions_dir/decline.php"); //Regular Elgg engine sends out an email via an event. The 400 priority will let us run first. //Then we return false to stop the event chain. The normal event handler will never get to run. //elgg_register_event_handler('create', 'friend', 'friendrequest_event_create_friend', 400); //Handle our add action event: //elgg_register_event_handler('create', 'friendrequest', 'friendrequest_event_create_friendrequest'); } function friendrequest_page_handler($page){ //Keep the URLs uniform: if (isset($page[0])) { forward("friendrequests"); } elgg_push_context('friends'); $params = array( 'title' => elgg_echo('friendrequest'), 'filter' => '', ); $body = elgg_view_layout('content', $params); echo elgg_view_page($params['title'], $body); return true; } function friendrequest_event_create_friend($event, $object_type, $object){ if (($object instanceof ElggRelationship) && ($event == 'create') && ($object_type == 'friend')) { //We don't want anything happening here... (no email/etc) //Returning false will interrupt the rest of the chain. //The normal handler for the create friend event has a priority of 500 so it will never be called. return false; } return true; //Shouldn't get here... } function friendrequest_event_create_friendrequest($event, $object_type, $object){ }